W przypadku krotki t = ((1, 'a'),(2, 'b'))
dict(t)
zwraca{1: 'a', 2: 'b'}
Czy jest dobry sposób na zdobycie {'a': 1, 'b': 2}
(zamiana kluczy i vals)?
Ostatecznie chcę móc zwrócić 1
dane 'a'
lub 2
dane 'b'
, być może przejście na dyktando nie jest najlepszym sposobem.
python
dictionary
tuples
Jake
źródło
źródło
dict(zip(*zip(*t)[::-1]))
. To jest wolniejsze, brzydsze i zużywa znacznie więcej pamięci… prawdopodobnie 3x.dict((x, y) for x, y, z in t)
lubdict((x, (y, z)) for x, y, z in t)
pobrać drugą i trzecią wartość jako krotkę.Nieco prostsza metoda:
źródło
reverse
zostało wyraźnie określone.map
jest szybsze niż zrozumienie, gdy mapowana rzecz jest kolejną wbudowaną funkcją (np.reversed
); w większości innych przypadków jest odwrotnie. Ale lepiej profilować niż zgadywać :)Jeszcze bardziej zwięzłe, jeśli korzystasz z Pythona 2.7:
źródło
Lub:
źródło
Jeśli istnieje wiele wartości dla tego samego klucza, poniższy kod dołączy te wartości do listy odpowiadającej ich kluczowi,
źródło
Oto kilka sposobów na zrobienie tego:
źródło