2011-03-27 52 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']