微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何有效地循环字典,我是否应该使用其他数据结构

如何解决如何有效地循环字典,我是否应该使用其他数据结构

我有一个叫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,其中包含以下内容

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]}']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。