ขอบคุณกลุ่มผู้ใช้ที่ยอดเยี่ยมใน SO ฉันได้ค้นพบความเป็นไปได้ที่มีให้โดยcollections.defaultdict
เฉพาะอย่างยิ่งในการอ่านและความเร็ว ฉันทำให้พวกเขาใช้กับความสำเร็จ
ตอนนี้ฉันต้องการที่จะใช้สามระดับของพจนานุกรมสองคนด้านบนถูกและต่ำสุดเป็นหนึ่งdefaultdict
int
ฉันไม่พบวิธีที่เหมาะสมในการทำเช่นนี้ นี่คือความพยายามของฉัน:
from collections import defaultdict
d = defaultdict(defaultdict)
a = [("key1", {"a1":22, "a2":33}),
("key2", {"a1":32, "a2":55}),
("key3", {"a1":43, "a2":44})]
for i in a:
d[i[0]] = i[1]
ตอนนี้ใช้งานได้ แต่สิ่งต่อไปนี้ซึ่งเป็นพฤติกรรมที่ต้องการไม่ได้:
d["key4"]["a1"] + 1
ฉันสงสัยว่าฉันควรจะประกาศที่ไหนสักแห่งว่าระดับที่สองdefaultdict
เป็นประเภทint
แต่ฉันไม่พบว่าจะทำที่ไหนหรืออย่างไร
เหตุผลที่ฉันใช้defaultdict
ในตอนแรกคือการหลีกเลี่ยงการเริ่มต้นพจนานุกรมสำหรับแต่ละคีย์ใหม่
ข้อเสนอแนะใด ๆ ที่สง่างามมากขึ้น?
ขอบคุณ pythoneers!
multiprocessing
คือไม่มีความสุขเกี่ยวกับการส่งเหล่านี้ไปมา