假设我有一个属于字典的键列表:
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]]
答案 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']
请告诉我你要去的地方......