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

精慕HU
TA贡献1845条经验 获得超8个赞
要在列表列表中搜索关键字,您需要在这些内部列表中进行搜索:
您可以any
在这里使用:
any(key in x for x in record)
或者,如果您的密钥始终在第一个索引处,那么这也将起作用:
any(key == x[0] for x in record)
或用于list.extend
将单个项目附加到列表(而不是整个列表),则您的方法将可以正常工作。

茅侃侃
TA贡献1842条经验 获得超21个赞
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)
添加回答
举报
0/150
提交
取消