我有一个填充的列表填充列表
record.append([key, value1, count1, value2, count2])
但是当我使用内置函数时,它不起作用。
if k in record
在Python中搜索多维列表最优雅的方法是什么?
答案 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)