python:将列表索引为dict

python:将列表索引为dict,python,dictionary,Python,Dictionary,是否有通过索引函数索引列表的内置代码?或者我必须这样做: def index(alist, keyExtractor): result = dict() for item in alist: key = keyExtractor(item) if key is not None: result[key] = item return result 您可能希望使用字典理解: >>> import op

是否有通过索引函数索引列表的内置代码?或者我必须这样做:

def index(alist, keyExtractor):
    result = dict()
    for item in alist:
        key = keyExtractor(item)
        if key is not None:
            result[key] = item
    return result

您可能希望使用字典理解:

>>> import operator
>>> keyExtractor=operator.itemgetter(1) # for demonstration purposes

>>> aList = [('a', 'foo'), ('b', 'bar'), ('q', 'quux')]
>>> d = {keyExtractor(x):x for x in aList}
>>> if None in d:
      del d[None]
>>> d
{'quux': ('q', 'quux'), 'foo': ('a', 'foo'), 'bar': ('b', 'bar')}

您可能希望使用字典理解:

>>> import operator
>>> keyExtractor=operator.itemgetter(1) # for demonstration purposes

>>> aList = [('a', 'foo'), ('b', 'bar'), ('q', 'quux')]
>>> d = {keyExtractor(x):x for x in aList}
>>> if None in d:
      del d[None]
>>> d
{'quux': ('q', 'quux'), 'foo': ('a', 'foo'), 'bar': ('b', 'bar')}

不,没有内置函数,因为用例相对较少。如果
keyExtractor
始终返回有效密钥,则可以使用较短的:


不,没有内置函数,因为用例相对较少。如果
keyExtractor
始终返回有效密钥,则可以使用较短的:

试试这个:

{ keyExtractor(item) : item for item in alist }
它在Python2.7和Python3中可用

如果
keyExtractor
返回
None
,您可能需要在以后删除
None
条目。

尝试以下操作:

{ keyExtractor(item) : item for item in alist }
它在Python2.7和Python3中可用

如果
keyExtractor
返回
None
,您可能需要在之后删除
None
条目。

在python 2.7中:

{keyExtractor(i): i for i in alist}
对于老年人:

dict((keyExtractor(i), i) for i in alist)
在python 2.7中:

{keyExtractor(i): i for i in alist}
对于老年人:

dict((keyExtractor(i), i) for i in alist)

可能要使用
。。。如果keyExtractor(x)不是None}
允许“真实性”为False的键。修复!无论如何,最好的方法是避免在KeyExtractor上重复计算。如果您想使用
。。。如果keyExtractor(x)不是None}
允许“真实性”为False的键。修复!无论如何,最好的方法是避免在keyExtractor上进行双重计算