簡體   English   中英

將元組作為值添加到字典中的現有鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM