【发布时间】:2013-07-02 15:57:20
【问题描述】:
我的问题可能很简单,但是我一直在对多种方法感到困惑,如果不使用许多 for 循环似乎无法找到有效的答案。
我有一本字典:
my_dict = {'full_name1' : 1,
'full_name2' : 2,
'full_name3' : 3}
我也有这本词典:
another_dict = {'name1' : 'x',
'name2' : 'y',
'name3' : 'z'}
我想要生成第三个字典,如下所示:
third_dict = {1 : 'x',
2 : 'y',
3 : 'z'}
my_dict 的值是third_dict 中对应another_dict 值的键。这对我来说很容易,只是前两个字典的键名不相同。我假设another_dict 中的键名将始终是my_dict 中的一部分,但并非my_dict 中的所有键都会在another_dict 中具有匹配的键。
我目前的、错误的、低效的方法:
third_dict={}
for key in my_dict:
for sub_key in another_dict:
if sub_key in key:
for key in my_dict:
third_dict[my_dict[key]] = another_dict[sub_key]
编辑:正如建议的那样,看看如何处理异常会很有趣。例如,如果 another_dict 有一个条目,它与 my_dict 中的条目不匹配,反之亦然?或者如果 another_dict 有多余的条目怎么办?
【问题讨论】:
-
dict(zip(my_dict.values(), another_dict.values())) -
有趣的问题。但有趣的部分涉及如何处理不匹配和多余的匹配。例如: (A) 如果
another_dict有一个name4键(不匹配)会发生什么。 (B) 如果my_dict也有一个total_name2键(多余的匹配项)会发生什么。也许您可以编辑您的问题以澄清这些问题。 -
在提供的任何答案中均未引发异常。字典理解是使用条件构造的,所以
for every partial_key in dict2 for every full_key in dict1 if partial_key in full_key简单地迭代dict1和dict2中的键,检查partial_key是否是full_key的一部分,如果条件不成立,继续前进而不包括理解中的值。
标签: python dictionary key contains key-value