Tambahkan beberapa nilai ke kamus python untuk loop

Secara alami, kamus adalah pemetaan satu-ke-satu, tetapi tidak sulit untuk menjadikannya satu-ke-banyak — dengan kata lain, untuk membuat satu peta kunci ke banyak nilai. Ada dua kemungkinan pendekatan, bergantung pada bagaimana Anda ingin memperlakukan duplikasi dalam kumpulan nilai untuk kunci. Pendekatan berikut memungkinkan duplikasi tersebut

d1 = {}
d1.setdefault(key, []).append(value)

sementara pendekatan ini secara otomatis menghilangkan duplikasi

d2 = {}
d2.setdefault(key, {})[value] = 1
_

Kamus normal melakukan pemetaan sederhana dari kunci ke nilai. Resep ini menunjukkan dua cara mudah dan efisien untuk mencapai pemetaan setiap kunci ke beberapa nilai. Semantik dari kedua pendekatan tersebut sedikit berbeda tetapi yang terpenting adalah bagaimana mereka menghadapi duplikasi. Setiap pendekatan bergantung pada metode kamus

d2 = {}
d2.setdefault(key, {})[value] = 1
7 untuk menginisialisasi entri untuk kunci dalam kamus, jika diperlukan, dan dalam hal apa pun untuk mengembalikan entri tersebut

Tentu saja, Anda harus dapat melakukan lebih dari sekadar menambahkan nilai untuk sebuah kunci. Dengan pendekatan pertama, yang memungkinkan duplikasi, berikut cara mengambil daftar nilai untuk sebuah kunci

list_of_values = d1[key]

Berikut cara menghapus satu nilai untuk kunci, jika Anda tidak keberatan membiarkan daftar kosong sebagai item

d2 = {}
d2.setdefault(key, {})[value] = 1
8 saat nilai terakhir untuk kunci dihapus

d1[key].remove(value)

Meskipun daftarnya kosong, masih mudah untuk menguji keberadaan kunci dengan setidaknya satu nilai

def has_key_with_some_values(d, key):
    return d.has_key(key) and d[key]
_

Ini mengembalikan

d2 = {}
d2.setdefault(key, {})[value] = 1
_9 atau daftar, yang mungkin kosong. Dalam kebanyakan kasus, lebih mudah menggunakan fungsi yang selalu mengembalikan daftar (mungkin yang kosong), seperti

def get_values_if_any(d, key):
    return d.get(key, [])
_

Anda dapat menggunakan salah satu dari fungsi ini dalam sebuah pernyataan. Sebagai contoh

if get_values_if_any(d1, somekey):
if has_key_with_some_values(d1, somekey):
_

Namun,

list_of_values = d1[key]
_0 umumnya lebih mudah. Misalnya, Anda dapat menggunakannya untuk memeriksa apakah
list_of_values = d1[key]
1 adalah salah satu nilai untuk
list_of_values = d1[key]
2

if 'freep' in get_values_if_any(d1, somekey):

Kecekatan ekstra ini berasal dari

list_of_values = d1[key]
_0 selalu mengembalikan daftar, daripada terkadang daftar dan terkadang
d2 = {}
d2.setdefault(key, {})[value] = 1
9

Pendekatan pertama memungkinkan setiap nilai hadir beberapa kali untuk setiap kunci yang diberikan. Sebagai contoh

example = {}
example.setdefault('a', []).append('apple')
example.setdefault('b', []).append('boots')
example.setdefault('c', []).append('cat')
example.setdefault('a', []).append('ant')
example.setdefault('a', []).append('apple')

Sekarang

list_of_values = d1[key]
5 adalah
list_of_values = d1[key]
6. Jika sekarang kita mengeksekusi

example['a'].remove('apple')

tes berikut masih puas

d2 = {}
d2.setdefault(key, {})[value] = 1
_0

list_of_values = d1[key]
7 hadir dua kali, dan kami menghapusnya hanya sekali. (Pengujian untuk
list_of_values = d1[key]
_7 dengan
list_of_values = d1[key]
9 akan lebih umum, meskipun setara dalam kasus ini. )

Pendekatan kedua, yang menghilangkan duplikasi, membutuhkan idiom yang agak mirip. Berikut cara mengambil daftar nilai untuk kunci

d2 = {}
d2.setdefault(key, {})[value] = 1
_1

Berikut cara menghapus pasangan kunci/nilai, meninggalkan kamus kosong sebagai item

d1[key].remove(value)
0 saat nilai terakhir untuk kunci dihapus

d2 = {}
d2.setdefault(key, {})[value] = 1
_2

Fungsi

d1[key].remove(value)
_1 yang ditunjukkan sebelumnya juga berfungsi untuk pendekatan kedua, dan Anda juga memiliki alternatif yang serupa, seperti

d2 = {}
d2.setdefault(key, {})[value] = 1
_3

Pendekatan kedua tidak mengizinkan duplikasi. Sebagai contoh

d2 = {}
d2.setdefault(key, {})[value] = 1
_4

Sekarang

list_of_values = d1[key]
5 adalah
d1[key].remove(value)
3. Sekarang, jika kita mengeksekusi

d2 = {}
d2.setdefault(key, {})[value] = 1
_5

tes berikut tidak puas

d2 = {}
d2.setdefault(key, {})[value] = 1
_0

list_of_values = d1[key]
7 ada, tetapi kami baru saja menghapusnya

Resep ini berfokus pada cara membuat kode fungsionalitas mentah, tetapi jika Anda ingin menggunakan fungsionalitas ini secara sistematis, Anda ingin membungkusnya di kelas. Untuk itu, Anda perlu membuat beberapa keputusan desain yang disorot oleh resep. Apakah Anda ingin nilai berada di entri untuk kunci beberapa kali?

Bagaimana Anda menambahkan banyak nilai ke kamus di Python untuk loop?

Gagasan Umum. Dengan Python, jika kita ingin kamus memiliki banyak nilai untuk satu kunci, kita perlu menyimpan nilai ini dalam wadahnya sendiri di dalam kamus. Untuk melakukannya, kita perlu menggunakan wadah sebagai nilai dan menambahkan beberapa nilai kita ke wadah itu . Wadah umum adalah daftar, tupel, dan set.

Bagaimana Anda menambahkan banyak item ke kamus dengan python?

Dengan Python, kita bisa menambahkan beberapa key-value pair ke kamus yang sudah ada. Ini dicapai dengan menggunakan metode update() . Metode ini mengambil argumen bertipe dict atau iterable apa pun yang memiliki panjang dua - seperti ((key1, value1),) , dan memperbarui kamus dengan pasangan kunci-nilai baru.

Bisakah Anda memiliki 3 item dalam kamus python?

Anda dapat menambahkan item sebanyak yang Anda suka .

Bisakah Anda menambahkan semua nilai dalam kamus python?

Cukup mudah untuk mendapatkan jumlah nilai kamus python. Anda bisa mendapatkan nilai dalam daftar terlebih dahulu menggunakan dict. nilai(). Kemudian Anda dapat memanggil metode penjumlahan untuk mendapatkan jumlah dari nilai-nilai ini .