Jika saya memiliki kamus seperti:
{ 'a': 1, 'b': 2, 'c': 3 }
Bagaimana saya bisa mengubahnya menjadi ini?
[ ('a', 1), ('b', 2), ('c', 3) ]
Dan bagaimana saya bisa mengubahnya menjadi ini?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
Jika saya memiliki kamus seperti:
{ 'a': 1, 'b': 2, 'c': 3 }
Bagaimana saya bisa mengubahnya menjadi ini?
[ ('a', 1), ('b', 2), ('c', 3) ]
Dan bagaimana saya bisa mengubahnya menjadi ini?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
[tuple(reversed(x)) for x in d.items()]
x
sudah adatuple
dalam kode Anda (itu sifatitems
untuk menghasilkan iterable darituple
s), itu akan lebih mudah / lebih cepat untuk dilakukan[x[::-1] for x in d.items()]
; irisan pembalik secara langsung membangun kebalikantuple
dari ukuran yang tepat daripada memilikituple
konstruktor yang berulang-ulang (dengan keseluruhan lokasi dan ukuran pada akhirnya) atuple
darireversed
iterator.k, v
pola dalam kasus seperti itu.compatibility
tag karena py2.x // py3.x perbedaanJawaban:
Ini bukan dalam urutan yang Anda inginkan, tetapi dikte tidak memiliki urutan tertentu. 1 Urutkan atau atur jika perlu.
Lihat: item () , iteritems ()
Dalam Python 3.x, Anda tidak akan menggunakan
iteritems
(yang sudah tidak ada lagi), melainkan menggunakannyaitems
, yang sekarang mengembalikan "tampilan" ke dalam item kamus. Lihat dokumen What's New untuk Python 3.0, dan dokumentasi baru tentang pandangan .1: Pelestarian penyisipan-urutan untuk dikte ditambahkan dalam Python 3.7
sumber
karena tidak ada orang lain yang melakukannya, saya akan menambahkan versi py3k:
sumber
Anda dapat menggunakan pemahaman daftar.
akan membuat Anda
[ ('a', 1), ('b', 2), ('c', 3) ]
dancontoh lainnya.
Baca lebih lanjut tentang pemahaman daftar jika Anda suka, sangat menarik apa yang dapat Anda lakukan dengannya.
sumber
Buat daftar namesupuple
Seringkali bisa sangat berguna untuk menggunakan namesuple . Misalnya, Anda memiliki kamus 'nama' sebagai kunci dan 'nilai' sebagai nilai-nilai seperti:
Anda dapat membuat daftar item sebagai tupel, diurutkan jika Anda suka, dan mendapatkan nama dan skor, katakanlah pemain dengan skor tertinggi (indeks = 0) dengan sangat Pythonically seperti ini:
Bagaimana cara melakukannya:
daftar dalam urutan acak atau menjaga urutan koleksi. OrderedDict :
dalam urutan, diurutkan berdasarkan nilai ('skor'):
diurutkan dengan skor terendah terlebih dahulu:
diurutkan dengan skor tertinggi pertama:
sumber
Apa yang Anda inginkan adalah
dict
'sitems()
daniteritems()
metode.items
mengembalikan daftar tupel (kunci, nilai). Karena tupel tidak berubah, tupel tidak dapat dibalik. Dengan demikian, Anda harus mengulang item dan membuat tupel baru untuk mendapatkan tupel yang terbalik (nilai, kunci). Untuk iterasi,iteritems
lebih disukai karena menggunakan generator untuk menghasilkan tuple (kunci, nilai) daripada harus menyimpan seluruh daftar dalam memori.sumber
dan
sumber
Ini adalah perubahan yang melanggar dari Python 3.x dan Python 2.x
Untuk penggunaan Python3.x
Untuk penggunaan Python 2.7
sumber
sumber
Dengan
keys()
danvalues()
metode kamus danzip
.zip
akan mengembalikan daftar tupel yang berfungsi seperti kamus yang dipesan.Demo:
sumber
collections.OrderedDict()
yang bekerja lebih baik dengan beberapa versi lib Permintaan HTTP Python. Meskipun saya tidak sukazip
nama fungsi yang agak kabur / kelebihan.zip
-ifikasi bukan casting "dalam", yaitu jika ada anak-anak bersarang, mereka tidak akan terpengaruh. Anda mungkin harus memutar rekursi Anda sendiri.sumber
Yang lebih sederhana adalah
Yang kedua tidak sederhana tapi ya.
sumber