Menambahkan item ke Kamus dalam loop

Data di bawah ini diambil dari halaman web dan berisi entri seperti di bawah ini (seperti tabel dengan banyak baris):

entry1: key1: value1-1, key2: value2-1, key3: value3-1
entry2: key1: value1-2, key2: value2-2, key3: value3-2
entry3: key1: value3-1, key2: value2-3, key3: value3-3
......
entry100: key1: value100-1, key2: value100-2, key3: value100-3

bagaimana saya bisa menggunakan kamus untuk menyimpan data ini? datanya berasal dari daftar sehingga 'penambahan kamus' harus dilakukan dalam satu lingkaran...

inilah solusi saya saat ini:

case_list = {}
for entry in entries_list:
    case = {'key1': value, 'key2': value, 'key3':value }
    case_list.update(case)

tetapi case_list pada akhirnya hanya berisi entri kasus terakhir... Adakah yang bisa membantu saya dalam hal ini? Saya mengharapkan case_list berisi 100 entri tanpa ada penimpaan di antara entri, dan saya perlu menyimpannya ke DB setelahnya.


person Kay    schedule 02.07.2015    source sumber
comment
apakah setiap entri merupakan daftar, atau dapatkah Anda menunjukkan apa yang dimiliki entry_list?   -  person Anand S Kumar    schedule 02.07.2015
comment
Apa format key1: value1-1, key2: value2-1, key3: value3-1 dan bagaimana Anda menyimpan entri Anda di dalam file?   -  person kasravnd    schedule 02.07.2015
comment
Apa hasil yang diharapkan? Saat ini Anda hanya menimpa semua kunci pada setiap iterasi.   -  person bereal    schedule 02.07.2015
comment
case_list.update(case) akan memperbarui case_list dengan pasangan kunci/nilai baru dari case dan menimpa nilai untuk kasus yang ada.   -  person konart    schedule 02.07.2015


Jawaban (3)


Dalam kode Anda saat ini, yang dilakukan Dictionary.update() adalah memperbarui (memperbarui berarti nilai ditimpa dari nilai untuk kunci yang sama yang diteruskan dalam kamus) kunci dalam kamus saat ini dengan nilai dari kamus yang diteruskan sebagai parameter ke dalamnya (menambahkan pasangan kunci:nilai baru jika ada) . Kamus datar tunggal tidak memenuhi kebutuhan Anda, Anda memerlukan daftar kamus atau kamus dengan kamus bersarang.

Jika Anda menginginkan daftar kamus (di mana setiap elemen dalam daftar akan menjadi kamus entri) maka Anda dapat menjadikan case_list sebagai daftar dan kemudian menambahkan case ke dalamnya (bukan update).

Contoh -

case_list = []
for entry in entries_list:
    case = {'key1': entry[0], 'key2': entry[1], 'key3':entry[2] }
    case_list.append(case)

Atau Anda juga dapat memiliki kamus kamus dengan kunci setiap elemen dalam kamus adalah entry1 atau entry2 , dll dan nilainya adalah kamus yang sesuai untuk entri tersebut.

case_list = {}
for entry in entries_list:
    case = {'key1': value, 'key2': value, 'key3':value }
    case_list[entryname] = case  #you will need to come up with the logic to get the entryname.
person Anand S Kumar    schedule 02.07.2015

Sesuai pemahaman saya, Anda menginginkan data dalam kamus seperti yang ditunjukkan di bawah ini:

key1: value1-1,value1-2,value1-3....value100-1
key2: value2-1,value2-2,value2-3....value100-2
key3: value3-1,value3-2,value3-2....value100-3

untuk ini, Anda dapat menggunakan daftar untuk setiap kunci kamus:

case_list = {}
for entry in entries_list:
    if key in case_list:
        case_list[key1].append(value)
    else:
        case_list[key1] = [value]
person Deep Shah    schedule 02.07.2015

Solusi Lebih Sederhana - gunakan copy() daripada langsung menambahkan dict di list

case_list = []
for entry in entries_list:
    case = {'key1': value, 'key2': value, 'key3':value }
    case_list.append(case.copy())

Ini tidak akan memiliki duplikat apa pun.

person Harry_pb    schedule 24.03.2021