Создать диктат из комбинаций в списке - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь создать dict из всех возможных пар элементов в списке.Это то, что я пробовал.

>>from itertools import combinations
>>l = ['a','b','c']
>>dict(combinations(l,2))
{'a': 'c', 'b': 'c'}

Это неправильно, так как есть 3 возможные комбинации.Это отсутствует 'a': 'b'.Однако, когда я list(combinations(l,2)), он дает мне все возможные комбинации:

[('a', 'b'), ('a', 'c'), ('b', 'c')]

В чем здесь проблема?

1 Ответ

0 голосов
/ 03 октября 2018

Вы можете использовать defaultdict для создания сопоставления со списком значений:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for k, *v in combinations(l, 2):
...     d[k].extend(v)
... 
>>> dict(d)
{'a': ['b', 'c'], 'b': ['c']}
...