是否有一种内置/快速的方法来使用字典的键列表来获得对应项的列表?
例如,我有:
>>> mydict = {'one': 1, 'two': 2, 'three': 3}
>>> mykeys = ['three', 'one']
我如何使用mykeys在字典中作为列表获得相应的值?
>>> mydict.WHAT_GOES_HERE(mykeys)
[3, 1]
是否有一种内置/快速的方法来使用字典的键列表来获得对应项的列表?
例如,我有:
>>> mydict = {'one': 1, 'two': 2, 'three': 3}
>>> mykeys = ['three', 'one']
我如何使用mykeys在字典中作为列表获得相应的值?
>>> mydict.WHAT_GOES_HERE(mykeys)
[3, 1]
当前回答
除了list-comp,还有其他几种方法:
如果key未找到,则生成列表并抛出异常:__getitem__ mykey) 如果没有找到键,则使用None构建列表:得到,mykey)
或者,使用operator。Itemgetter可以返回一个元组:
from operator import itemgetter
myvalues = itemgetter(*mykeys)(mydict)
# use `list(...)` if list is required
注意:在Python3中,map返回一个迭代器而不是一个列表。使用list(map(…))作为列表。
其他回答
试试这个:
mydict = {'one': 1, 'two': 2, 'three': 3}
mykeys = ['three', 'one','ten']
newList=[mydict[k] for k in mykeys if k in mydict]
print newList
[3, 1]
这里有三种方法。
当找不到key时引发KeyError:
result = [mapping[k] for k in iterable]
缺少键的默认值。
result = [mapping.get(k, default_value) for k in iterable]
跳过丢失的键。
result = [mapping[k] for k in iterable if k in mapping]
new_dict = {x: v for x, v in mydict.items() if x in mykeys}
试试这个:
mydict = {'one': 1, 'two': 2, 'three': 3}
mykeys = ['three', 'one'] # if there are many keys, use a set
[mydict[k] for k in mykeys]
=> [3, 1]
reduce(lambda x,y: mydict.get(y) and x.append(mydict[y]) or x, mykeys,[])
以防字典里没有钥匙。