问题描述
我有一个叫dict1。当然,字典是组成的,而真正的字典则更大。
dict1 = {'USA_Mark': ['dog'],'USA_Haechan': ['lion','jaguar'],'USA_Mina': ['apples','pears','watermelons'],'UK_Mark': ['dog'],'UK_Haechan': ['lion','jaguar','tiger'],'UK_Mina': ['apples','watermelons']}
dict2 = {'USA_cats':['lion','USA_fruits':['apples,'UK_cats':['lion','UK_fruits':['apples,'watermelons']}
最后,我想要将dict2's
键映射到dict1's
值。
我用硬编码的方式做到了。我所做的是:
for key,value in dict1.items():
if 'Haechan' in key and len(value ) > 1:
dict1[key] = dict2['{} cats'.format(key[:2])]
elif 'Mina' in key and len(value) > 1:
dict1[key] = dict2['{} fruits'.format(key[:2])]
预期结果:
dict1 = {'USA_Mark': ['dog'],'USA_Haechan': ['USA_cats'],'USA_Mina': ['USA_fruits'],'UK_Haechan': ['UK_cats'],'UK_Mina': ['UK_fruits']}
这不是很有效,我知道,也许我知道更好的方法,我似乎在字典中经常使用循环,并且我从朋友那里听说,如果您始终如一地这样做,您可能需要考虑一个更好的数据结构...
解决方法
将键拆分为_
字符,然后使用字典将键的第二部分映射到翻译后的单词。
mapping = {'Haechan': 'cats','Mina': 'fruits'}
for key,value in dict1.items():
country,type = key.split('_')
if type in mapping and len(value) > 1:
dict1[key] = [f'{country}_{mapping[type]}']