在python列表中搜索元素

时间:2011-03-27 21:08:28

标签: python list

在python列表中搜索元素,然后访问特定值

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

Variable = 'A'  

i = Mylist.index(Variable)  
print i  

例如,我想检查变量是否存在并访问其元素,如  然后存在然后逐个访问每个子列表元素

例如,在上面的示例中,我想检查一下' A'存在,如果是,那么 可以访问各个子列表元素,例如' x' ,' y'和' z'

4 个答案:

答案 0 :(得分:1)

看起来你还没有找到Python dict。也许你的意思是:

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']

答案 1 :(得分:0)

你只需要使用字典......

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

答案 2 :(得分:0)

正如其他人所说,当你需要通过任意数据类型(如字符串)索引事物时,dict实际上是适当的数据类型。对于嵌套序列,无法保证您的“索引”(在这种情况下为“A”和“B”)将是唯一的,并且需要一些额外的扭曲来查找值。正如其他人所说,['x','y','z']部分保持有序,无论它是否是一个元组中的列表列表,或列表中的列表。

那就是说,我能想到的最简单的方法是在不使用字典的情况下找到你想要的元组:

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

答案 3 :(得分: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']