2011-03-27 42 views
3

搜索在Python列表元素搜索元素,然後訪問特定值在Python列表

Mylist = [('A',3,['x','y','z']),('B',2,['m','n'])] 

Variable = 'A' 

i = Mylist.index(Variable) 
print i 

例如我想檢查是否是可變的存在並訪問它的元素等 存在,則例如,在上面的例子中,我想檢查'A'是否存在,如果是,則 可以訪問其各個子列表元素,如'x','y'和'z'

回答

0

你只需要使用字典...

myDict = dict([('A',3,['x','y','z']),('B',2,['m','n'])]) 
if 'A' in myDict: 
    val = myDict['A'] 
+0

好的,但我不能搜索列表?對我來說也是我的'A'中的單個元素的順序,我希望按順序打印x,y和z – rohit 2011-03-27 21:23:11

1

它看起來像你有沒有發現Python的字典呢。也許你的意思是:

mydict = {} 
mydict['A'] = {'count': 3, 'letters': ['x','y','z']} 
mydict['B'] = {'count': 2, 'letters': ['m','n']} 

mydict是本身包含的字典詞典。

你可以再看看他們了:

val = mydict['A'] 
print val['letters'] 

當然,還有在存儲「計數」,因爲你可以只使用len()如果你需要小點。你可以做到這一點,像這樣:

mydict = {'A': ['x','y','z'], 'B': ['m','n']} 
print mydict['A'] 
0

正如其他人所說,一個字典是真的,當你用任意的數據類型(如字符串),需要的東西指數使用適當的數據類型。對於嵌套序列,不能保證你的'索引'(在這種情況下'A'和'B')將是唯一的,並且需要一些額外的扭曲來查找值。也正如其他人所說,無論它是列表中的列表還是列表,['x','y','z']部分將仍然保持順序,無論它是列表中的元組列表還是列表-in-A-字典。

這麼說,我能想到的找到你想要的元組,而無需使用字典的最簡單的方法是:

indices = zip(*Mylist)[0] # ('A', 'B') 
index = indices.index('A') # 0 
result = Mylist[index]  # ('A', 3, ['x', 'y', 'z']) 

要獲取的子表,使用其指數:

sublist = result[2] 

或解壓縮:

lookup, length, sublist = result 
0
Mylist = [('A',3,['x','y','z']),('B',2,['m','n']), 
      ('C',5,['r','p','u']),('A',10,['k','X']), 
      ('E',8,['f','g','h','j'])] 

for i,(a,b,c) in enumerate(Mylist): 
    if a=='A': 
     print i,c 

結果

0 ['x', 'y', 'z'] 
3 ['k', 'X']