我有一个键的字典:值对和一个键列表如下:
dict1 = {'a':(1, 2), 'b':(2,2), 'c':(3,3), 'd':(4,4)}
list1 = ['a', 'c']
我现在想要创建一个只包含从list1获取的键:值对的新词典。所以最终的结果是下面的list2:
list2 = {'a':(1, 2), 'c':(3,3)}
非常感谢帮助。我目前正在使用python 2.5.4,如果这有什么不同?
提前谢谢你。汤姆
答案 0 :(得分:5)
一个很好的表达,即使在2.5你有一个简单的解决方案
dict((k, dict1[k]) for k in list1)
dict
有一个初始化器,它接受一个可迭代的元组。内部表达式一次生成一个元组,查看list1
中的键并从dict1
获取值
如果KeyError
包含不在list1
中的密钥,则上述结果会产生dict1
,如果情况如此,那么下面的内容将通过查看中的密钥来生效dict并检查它在list1
dict((k, v) for k, v in dict1.iteritems() if k in list1)
答案 1 :(得分:0)
你可以这样做:
dict2 = {}
for key in list1:
dict2[key] = dict1[key]
(我将list2
重命名为dict2
,似乎更有意义。)
答案 2 :(得分:0)
这样的事情:
new_dict = {}
for i in list1:
new_dict[i] = dict1[i]
答案 3 :(得分:0)
您可以通过简单的循环执行此操作:
result = {}
for item in list1:
result[item] = dict1[item]
或者,在2.7+中,有一个词典理解:
result = {key: value
for key, value in dict1.items()
if key in list1}
答案 4 :(得分:-1)
做一些简单的事情:
for item in list1:
list2[item] = dict1[item]