Kamu bisa mencoba:
dict((k, bigdict[k]) for k in ('l', 'm', 'n'))
... atau masuk Python 3Versi Python 2.7 atau yang lebih baru (terima kasih kepada Fábio Diniz karena menunjukkan bahwa itu berfungsi di 2.7 juga) :
{k: bigdict[k] for k in ('l', 'm', 'n')}
Pembaruan: Seperti yang ditunjukkan Håvard S , saya berasumsi bahwa Anda tahu kunci akan ada di kamus - lihat jawabannya jika Anda tidak dapat membuat asumsi itu. Atau, seperti yang ditunjukkan timbo dalam komentar, jika Anda ingin kunci yang hilang bigdict
untuk dipetakan None
, Anda dapat melakukan:
{k: bigdict.get(k, None) for k in ('l', 'm', 'n')}
Jika Anda menggunakan Python 3, dan Anda hanya ingin kunci di dikt baru yang benar-benar ada di yang asli, Anda dapat menggunakan fakta untuk melihat objek mengimplementasikan beberapa operasi yang ditetapkan:
{k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}
bigdict
tidak mengandungk
{k: bigdict.get(k,None) for k in ('l', 'm', 'n')}
akan berurusan dengan situasi di mana kunci yang ditentukan tidak ada dalam kamus sumber dengan menetapkan kunci dict baru untuk Tidak adabigdict.keys() & {'l', 'm', 'n'}
==>bigdict.viewkeys() & {'l', 'm', 'n'}
untuk Python2.7Sedikit lebih pendek, setidaknya:
sumber
dict((k,bigdict.get(k,defaultVal) for k in wanted_keys)
jika Anda harus memiliki semua kunci.sumber
Sedikit perbandingan kecepatan untuk semua metode yang disebutkan:
Seperti yang diharapkan: pemahaman kamus adalah pilihan terbaik.
sumber
key
tidak adabigdict
.Jawaban ini menggunakan pemahaman kamus yang mirip dengan jawaban yang dipilih, tetapi tidak akan kecuali pada item yang hilang.
versi python 2:
versi python 3:
sumber
Mungkin:
Python 3 bahkan mendukung yang berikut ini:
Perhatikan bahwa Anda dapat memeriksa keberadaan dalam kamus sebagai berikut:
resp. untuk python 3
sumber
a
tidak dibigdict
Oke, ini adalah sesuatu yang telah menggangguku beberapa kali, jadi terima kasih Jayesh untuk menanyakannya.
Jawaban di atas sepertinya solusi yang baik, tetapi jika Anda menggunakan ini di seluruh kode Anda, masuk akal untuk membungkus fungsi IMHO. Juga, ada dua kemungkinan penggunaan di sini: satu di mana Anda peduli apakah semua kata kunci ada dalam kamus asli. dan satu di mana Anda tidak. Akan menyenangkan untuk memperlakukan keduanya dengan setara.
Jadi, untuk nilai dua sen saya, saya sarankan menulis sub-kelas kamus, mis
Sekarang Anda bisa mengeluarkan sub-kamus dengan
Contoh penggunaan:
Jika Anda menjalankan semua kode di atas, Anda akan melihat (seperti) output berikut (maaf untuk pemformatan):
sumber
subdict(orig_dict, keys, …)
?Anda juga dapat menggunakan
map
(yang merupakan fungsi yang sangat berguna untuk mengenal):sd = dict(map(lambda k: (k, l.get(k, None)), l))
Contoh:
PS: Saya meminjam
.get(key, None)
dari jawaban sebelumnya :)sumber
Satu lagi (saya lebih suka jawaban Mark Longair)
sumber
larutan
contoh penggunaan
sumber