我有这两本字典;

Dict1 = {1: ('John', 37), 2: ('Tom', 23), 3: ('Tom', 19), 4: ('Jane', 58)}
Dict2 = {1: ('2',), 2: ('4',), 3: ('19',)}

处理上述两个字典得到的输出字典是;
OutputDict = {1: ('John', 37), 2: ('Tom', 23)}

得到OutputDict的逻辑是这样的;
(1)Dict1Dict2必须有匹配的键。否则,OutputDict将丢弃Dict1中的key:value对。
(2)如果找到匹配的键,Dict1值中的第二个元素必须与Dict2中的值不同。如果它们相同,OutputDict将丢弃Dict1中的key:value对。
如何用Python编程?我正在使用Python2.7。

最佳答案

您可以使用dictionary comprehension来遍历Dict1中的键值对,只保留那些键值对,以便(1)键值在Dict2中;(2)数值与Dict1Dict2匹配:
演示

>>> OutputDict = { k: v for k, v in Dict1.iteritems()
                   if k in Dict2 and int(Dict2[k][0]) != v[1] }
>>> OutputDict
{1: ('John', 37), 2: ('Tom', 23)}

关于python - 如何处理这两个字典以在Python中获得新字典?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22102593/

10-12 21:25