Объединение ключей со значениями словаря в python - PullRequest
1 голос
/ 05 апреля 2020

A имеет словарь, такой как следующий.

dict1 = {
          'a':['b','c'],
          'd':['e','f']
        }

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

dict1 = {
         'a':['b','c'],
         'b':['a','c'],
         'c':['a','b'],
         'd':['e','f'],
         'e':['d','f'],
         'f':['d','e']
        }

Как я могу сделать это в Python?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2020

Работали следующие:

dict1 = {
          'a':['b','c'],
          'd':['e','f']
        }

dict2 = { }

for k, v in dict1.items():
    for x in v:
        v_copy = v[:]
        v_copy.remove(x)
        dict2.update({x: [k] + v_copy})


dict1.update(dict2)


print(dict1)
1 голос
/ 05 апреля 2020

Вы можете создать набор, содержащий ключ и значения для каждой пары, и построить словарные записи из этого:

dict1 = {
          'a':['b','c'],
          'd':['e','f']
        }

sets = [set([key]) | set(values) for key, values in dict1.items() ]
# [{'a', 'b', 'c'}, {'f', 'd', 'e'}]

out = {}
for s in sets:
    for key in s:
        out[key] = list(s-set([key]))
print(out)

Вывод:

{'a': ['b', 'c'], 'b': ['a', 'c'], 'c': ['a', 'b'],
 'f': ['d', 'e'], 'd': ['f', 'e'], 'e': ['f', 'd']}
...