Na przykład, nazwać tę funkcję przez przepuszczanie słownika jako parametru:klucze inwertowany i wartości oryginalnej słowniku
>>> inv_map({'a':1, 'b':2, 'c':3, 'd':2})
{1: ['a'], 2: ['b', 'd'], 3: ['c']}
>>> inv_map({'a':3, 'b':3, 'c':3})
{3: ['a', 'c', 'b']}
>>> inv_map({'a':2, 'b':1, 'c':2, 'd':1})
{1: ['b', 'd'], 2: ['a', 'c']}
Jeśli
map = { 'a': 1, 'b':2 }
Mogę jedynie odwrócić tę mapę, aby uzyskać:
inv_map = { 1: 'a', 2: 'b' }
za pomocą tego
dict((v,k) for k, v in map.iteritems())
Ktoś wie, jak to zrobić w moim przypadku?
Zauważ, że ostatnia linia konwersji 'collections.defaultdict' powrotem do normalnej' dict'- bardzo często nie jest konieczne, a nawet niepożądane. –
@MikeGraham Czy możesz wyjaśnić, dlaczego? Często robię więcej błędów, gdy nie dodaję tego wiersza (ponieważ jeśli szukasz i nie istniejący klucz, doda go). – tomasyany