0

我有一个像这样填充的列表填充列表

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

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

if k in record

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

4

2 回答 2

2

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

你可以any在这里使用:

any(key in x for x in record)

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

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

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

于 2013-05-12T06:16:08.887 回答
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)
于 2013-05-12T06:19:06.733 回答