我有一个像这样填充的列表填充列表
record.append([key, value1, count1, value2, count2])
但是当我使用内置函数时它不起作用。
if k in record
在 Python 中搜索多维列表的最优雅的方法是什么?
我有一个像这样填充的列表填充列表
record.append([key, value1, count1, value2, count2])
但是当我使用内置函数时它不起作用。
if k in record
在 Python 中搜索多维列表的最优雅的方法是什么?
要在列表列表中搜索键,您需要在这些内部列表中搜索:
你可以any
在这里使用:
any(key in x for x in record)
或者如果您的密钥始终位于第一个索引处,那么这也将起作用:
any(key == x[0] for x in record)
或用于list.extend
将单个项目附加到列表(而不是整个列表),那么您的方法将正常工作。
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)