我有一個這樣填充的列表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條經驗 獲得超22個贊
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
提交
取消