如何确定Python中的多维列表中是否存在密钥

时间:2013-05-12 06:13:35

标签: python list python-2.7

我有一个填充的列表填充列表

record.append([key, value1, count1, value2, count2])

但是当我使用内置函数时,它不起作用。

if k in record

在Python中搜索多维列表最优雅的方法是什么?

2 个答案:

答案 0 :(得分:2)

要搜索列表列表中的键,您需要在这些内部列表中搜索:

您可以在此处使用any

any(key in x for x in record)

或者如果您的密钥始终位于第一个索引处,那么这也将起作用:

any(key == x[0] for x in record)

或使用list.extend将单个项目附加到列表中(而不是整个列表),那么您的方法将正常工作。

答案 1 :(得分:1)

import operator
if key in map(operator.itemgetter(0),records): ...

是我可能使用的方法,或者是更有效的方法,它会在没有迭代整个列表的情况下短路(根据Ashwini的评论)......

import operator,itertools
if key in itertools.imap(operator.itemgetter(0),records): ...

但我真的想到你真正想要的东西

def findRecord(key,records):
    for r in records:
        if r[0] == key: 
            return r

print findRecord("some_key",records)