การเพิ่มรายการลงในพจนานุกรมภายในวง

ข้อมูลด้านล่างถูกเข้าใจจากหน้าเว็บและมีรายการดังต่อไปนี้ (เช่นตารางที่มีหลายแถว):

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

ฉันจะใช้พจนานุกรมเพื่อจัดเก็บข้อมูลนี้ได้อย่างไร ข้อมูลมาจากรายการดังนั้น 'การต่อท้ายพจนานุกรม' ควรทำภายในลูป...

นี่คือวิธีแก้ปัญหาปัจจุบันของฉัน:

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

แต่ case_list ในตอนท้ายมีเพียงรายการ case สุดท้ายเท่านั้น... ใครสามารถช่วยฉันในเรื่องนี้ได้บ้าง? ฉันคาดหวังว่า case_list จะมี 100 รายการโดยไม่มีการเขียนทับระหว่างรายการ และฉันจะต้องเก็บไว้ใน DB หลังจากนั้น


person Kay    schedule 02.07.2015    source แหล่งที่มา
comment
แต่ละรายการเป็นรายการหรือคุณสามารถแสดงว่ารายการอะไรบ้างมี?   -  person Anand S Kumar    schedule 02.07.2015
comment
key1: value1-1, key2: value2-1, key3: value3-1 เป็นรูปแบบใด และคุณจัดเก็บรายการของคุณไว้ในไฟล์อย่างไร   -  person kasravnd    schedule 02.07.2015
comment
ผลลัพธ์ที่คาดหวังคืออะไร? ขณะนี้คุณกำลังเขียนทับคีย์ทั้งหมดในการวนซ้ำแต่ละครั้ง   -  person bereal    schedule 02.07.2015
comment
case_list.update(case) จะอัปเดต case_list ด้วยคู่คีย์/ค่าใหม่จาก case และเขียนทับค่าสำหรับกรณีที่มีอยู่   -  person konart    schedule 02.07.2015


คำตอบ (3)


ในโค้ดปัจจุบันของคุณ สิ่งที่ Dictionary.update() ทำคืออัปเดต (อัปเดตหมายความว่าค่าถูกเขียนทับจากค่าสำหรับคีย์เดียวกันในพจนานุกรมที่ส่งผ่าน) คีย์ในพจนานุกรมปัจจุบันที่มีค่าจากพจนานุกรมที่ส่งผ่านเป็นพารามิเตอร์ (เพิ่ม คู่คีย์:ค่าใหม่ใด ๆ ถ้ามี) พจนานุกรมแบบแบนเพียงพจนานุกรมเดียวไม่ตรงตามความต้องการของคุณ คุณต้องมีรายการพจนานุกรมหรือพจนานุกรมที่มีพจนานุกรมซ้อนกัน

หากคุณต้องการรายการพจนานุกรม (โดยที่แต่ละองค์ประกอบในรายการจะเป็นพจนานุกรมของรายการ) คุณสามารถสร้าง case_list เป็นรายการแล้วต่อท้าย case ได้ (แทนที่จะอัปเดต)

ตัวอย่าง -

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

หรือคุณสามารถมีพจนานุกรมพจนานุกรมที่มีคีย์ของแต่ละองค์ประกอบในพจนานุกรมเป็น entry1 หรือ entry2 ฯลฯ และค่าเป็นพจนานุกรมที่เกี่ยวข้องสำหรับรายการนั้น

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

ตามความเข้าใจของฉันคุณต้องการข้อมูลในพจนานุกรมดังที่แสดงด้านล่าง:

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

คุณสามารถใช้รายการสำหรับแต่ละคีย์พจนานุกรม:

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

วิธีแก้ปัญหาที่ง่ายกว่า - ใช้ copy() แทนที่จะต่อท้าย dict ใน list โดยตรง

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

สิ่งนี้จะไม่มีการซ้ำกัน

person Harry_pb    schedule 24.03.2021