Как заменить ключи словаря на ключи другого словаря? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть два словаря dict1 и dict2. Я хочу заменить ключи dict1 на ключи dict2. dict1.keys () выглядит следующим образом:

dict_keys(['8014.png54523', '7595.png37735', '6659.png50805', '8058.png26143','05324.png31372'])

dict2.keys () выглядит следующим образом:

dict_keys(['8014.png671302', '7595.png567733', '6659.png681968', '8058.png442154', '05324.png530138'])

Я хочу использовать dict2.keys () как dict1.keys. Может кто-нибудь мне помочь.

Спасибо!

Ответы [ 3 ]

1 голос
/ 31 марта 2020

Код

new_dict = {k2:dict1[k1] for k1, k2 in zip(dict1.keys(), dict2.keys())}

Тест

Ключи и фиктивные значения

keys1 = ['8014.png54523', '7595.png37735', '6659.png50805', '8058.png26143','05324.png31372']
vals1 = list(range(len(keys1)))
keys2 = ['8014.png671302', '7595.png567733', '6659.png681968', '8058.png442154', '05324.png530138']
vals2 = list(range(len(keys1)))

Словари

dict1 = dict(zip(keys1, vals1))
dict2 = dict(zip(keys2, vals2))

Новый словарь

# Have each k1, v1 in dict1
# and       k2, v2 from dict2
# new dict uses k2:v1
# where v1 = dict1[k1]
new_dict = {k2:dict1[k1] for k1, k2 in zip(dict1.keys(), dict2.keys())}

print(new_dict)

Вывод

{'8014.png671302': 0, '7595.png567733': 1, '6659.png681968': 2, '8058.png442154': 3, '05324.png530138': 4}
0 голосов
/ 31 марта 2020

Вы можете попробовать это:

new_dict1 = {new_key: dict1[old_key] for old_key, new_key in zip(dict1.keys(), dict2.keys())}
0 голосов
/ 31 марта 2020

IIU C: Попробуйте:

new_dict1 = {}
for key in dict2:
    filtered =  [k for k in dict1 if k.split(".")[0] == key.split(".")[0]]
    dict1_key = filtered[0] if len(filtered) > 0 else None
    if dict1_key:
        new_dict1[key] = dict1[dict1_key]

Выход:

>>>print(new_dict1.keys())
dict_keys(['8014.png671302', '7595.png567733', '6659.png681968', '8058.png442154', '05324.png530138'])
...