Для кортежа t = ((1, 'a'),(2, 'b'))
dict(t)
возвращается{1: 'a', 2: 'b'}
Есть ли хороший способ получить {'a': 1, 'b': 2}
(ключи и ключи поменялись местами)?
В конечном счете, я хочу иметь возможность вернуть 1
данное 'a'
или 2
данное 'b'
, возможно, обращение к диктату - не лучший способ.
python
dictionary
tuples
Джейк
источник
источник
dict(zip(*zip(*t)[::-1]))
. Это медленнее, уродливее и использует намного больше памяти .. вероятно, в 3 раза.dict((x, y) for x, y, z in t)
илиdict((x, (y, z)) for x, y, z in t)
получить второе и третье значения в виде кортежа.Немного более простой метод:
источник
reverse
четко изложено.map
быстрее, чем понимание, когда отображаемая вещь является другой встроенной функцией (напримерreversed
); в большинстве других случаев верно обратное. Но лучше профилировать, чем догадываться :)Еще более лаконично, если вы используете Python 2.7:
источник
Или:
источник
Если существует несколько значений для одного и того же ключа, следующий код добавит эти значения в список, соответствующий их ключу,
источник
Вот несколько способов сделать это:
источник