Untuk tuple, t = ((1, 'a'),(2, 'b'))
dict(t)
kembali{1: 'a', 2: 'b'}
Apakah ada cara yang baik untuk mendapatkan {'a': 1, 'b': 2}
(kunci dan vokal ditukar)?
Pada akhirnya, saya ingin dapat kembali 1
diberikan 'a'
atau 2
diberikan 'b'
, mungkin mengkonversi ke dikt bukanlah cara terbaik.
python
dictionary
tuples
Jake
sumber
sumber
dict(zip(*zip(*t)[::-1]))
. Ini lebih lambat, lebih buruk dan menggunakan lebih banyak memori .. mungkin 3x.dict((x, y) for x, y, z in t)
ataudict((x, (y, z)) for x, y, z in t)
untuk mendapatkan nilai kedua dan ketiga sebagai tupel.Metode yang sedikit lebih sederhana:
sumber
reverse
ejaan yang dijabarkan.map
lebih cepat daripada pemahaman ketika hal yang dipetakan adalah fungsi built-in lain (sepertireversed
); dalam kebanyakan kasus lain, yang terjadi adalah sebaliknya. Tetapi lebih baik profil daripada menebak :)Lebih ringkas jika Anda menggunakan python 2.7:
sumber
Atau:
sumber
Jika ada beberapa nilai untuk kunci yang sama, kode berikut akan menambahkan nilai-nilai itu ke daftar yang sesuai dengan kunci mereka,
sumber
Berikut adalah beberapa cara untuk melakukannya:
sumber