[英]Appending tuples as values to existing keys in a dictionary
我有一個列表列表,每個列表中都有3個項目(為示例起見):產品類型,產品顏色,產品數量。
我想做的是以每種產品類型為鍵,顏色和數量為值的方式創建字典。 也就是說,我要尋找的是這種結構:
KEY1:(tuple1),(tuple2),...
要么
KEY1:[(tuple1),(tuple2),...]
如您所知,您實際上無法將元組作為值附加到字典中的鍵上。
這是一個簡單的示例:
my_list = [["ball","red",2],["ball","blue",5],["ball","green",7],["shirt","large",5],["shirt","medium",9],["shirt","small",11]]
inventory_dict = {}
for item in my_list:
if item[0] not in inventory_dict:
inventory_dict[item[0]] = (item[1],item[2])
else:
inventory_dict[item[0]].append((item[1],item[2]))
當我嘗試做類似的事情時:
my_list = [["ball","red",2],["ball","blue",5],["ball","green",7],["shirt","large",5],["shirt","medium",9],["shirt","small",11]]
inventory_dict = {}
for item in my_list:
my_tuple = (item[1],) + tuple(item[2])
if item[0] not in inventory_dict:
inventory_dict[item[0]] = my_tuple
else:
inventory_dict[item[0]].append(my_tuple)
受此答案啟發,我收到了“ TypeError:'int'對象不可迭代”錯誤。
當我嘗試將my_tuple替換為:
my_tuple = list((item[1],item[2]))
受此答案啟發,我得到了這種形式的無法使用的結果:
{'ball': ['red', 2, ['blue', 5], ['green', 7]],
'shirt': ['large', 5, ['medium', 9], ['small', 11]]}
我無法使用它的原因是,例如,每個值的len是4,應為3。第一種類型及其數量是值列表中單獨的元素。
我應該提到的是,在我的代碼的下一步中,我計划使用大量的葯物進行哮喘治療。
希望我能夠很好地解釋我的問題,並希望您能提供幫助! 謝謝 :)
將第一個示例中的行更改為:
inventory_dict[item[0]] = [(item[1],item[2])]
如果希望以后可以追加內容,則需要在首次創建該值時將其設置為列表。
您還可以使用collections.defaultdict
,它可以讓您執行以下操作:
inventory_dict = collections.defaultdict(list)
然后您可以省去if-then,然后像這樣執行循環:
for item in my_list:
inventory_dict[item[0]].append((item[1], item[2]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.