繁体   English   中英

python:将列表索引为字典

[英]python: indexing a list as a dict

是否有内置代码通过索引函数为列表建立索引? 还是我必须这样做:

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')}

不,没有内置功能,因为用例相对很少。 如果keyExtractor总是返回有效的密钥,则可以使用较短的dict理解

def index(alist, keyExtractor):
    return {keyExtractor(item):item for item in alist}

尝试这个:

{ keyExtractor(item) : item for item in alist }

它在Python 2.7和Python 3中可用。

如果keyExtractor返回“ None您可能需要稍后删除“ None条目。

在python 2.7中:

{keyExtractor(i): i for i in alist}

对于较老的:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM