三行代码  ›  专栏  ›  技术社区  ›  ilovewt

如何有效地循环字典,我应该使用另一个数据结构吗

  •  0
  • ilovewt  · 技术社区  · 1 年前

    我有一个叫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', 'pears', 'watermelons']}
    

    我有另一个dict2,它包含如下内容:

    dict2 = {'USA_cats':['lion', 'jaguar'], 'USA_fruits':['apples, 'pears', 'watermelons'],
             'UK_cats':['lion', 'jaguar', 'tiger'], 'UK_fruits':['apples, 'pears', '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_Mark': ['dog'],
             'UK_Haechan': ['UK_cats'],
             'UK_Mina': ['UK_fruits']}
    

    0 回复  |  直到 1 年前
        1
  •  1
  •   Barmar    1 年前

    把钥匙劈开 _ 字符,然后用字典将键的第二部分映射到已翻译的单词。

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