用dict值替换键列表的有效方法?

时间:2014-02-26 23:38:32

标签: python

假设我有一个属于字典的键列表:

dict = {"a":[1,2], "b":[3,4], "c":[5,6]}
keys = ["a","b","c"]

用字典中的值替换列表中所有键的最有效方法是什么?

keys = ["a","b","c"]

变为

keys = [[1,2],[3,4],[5,6]]

3 个答案:

答案 0 :(得分:3)

像这样使用list comprehension

>>> # Please don't name a dictionary dict -- it overrides the built-in
>>> dct = {"a":[1,2], "b":[3,4], "c":[5,6]}
>>> keys = ["a","b","c"]
>>> id(keys)
28590032
>>> keys[:] = [dct[k] for k in keys]
>>> keys
[[1, 2], [3, 4], [5, 6]]
>>> id(keys)
28590032
>>>
仅当您希望列表对象保持不变时才需要

[:]。否则,您可以将其删除:

>>> dct = {"a":[1,2], "b":[3,4], "c":[5,6]}
>>> keys = ["a","b","c"]
>>> id(keys)
28561280
>>> keys = [dct[k] for k in keys]
>>> keys
[[1, 2], [3, 4], [5, 6]]
>>> id(keys)
28590032
>>>

答案 1 :(得分:2)

map让事情变得简单:

map(d.get, keys)

(或者,在Python 3.x中,list(map(d.get, keys))

答案 2 :(得分:0)

如果您想要一个dict中所有值的列表,请使用

>>> d={1: 'a', 2: 'b', 3: 'c', 4: 'd'}  
>>> d.values()
['a', 'b', 'c', 'd']

返回所有包含值的列表。

如果您想要密钥的子集,可以使用:

>>> d={1: 'a', 2: 'b', 3: 'c', 4: 'd'}  
>>> l=[1, 3]
>>> [d[x] for x in l]  
['a', 'c']

请告诉我你要去的地方......