亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何合并列表以創建 python 字典

如何合并列表以創建 python 字典

墨色風雨 2022-11-18 14:12:26
所以我嘗試了很多方法來做到這一點,但找不到有效的解決方案。在這個問題中,我有兩個 python 數組,我想加入它們來創建一個大字典。它會是這樣的:`list1 = [[2, "ford"],[4,"Ferrari"],[3, "Mercedes"],[1, "BMW"]]``list2 = [[4, "mustang"],[3,"LaFerrari"],[2,"CLA"],[1,"M5"],[6,"opel"]]`我想要的結果是一本看起來像這樣的字典:`result = {1: ["BMW","M5"], 2: ["Ford","CLA"], 3: ["Mercedes","LaFerrari"], 4: ["Ferrari","Mustang"], 6:["Opel"]}`所以它基本上只需要根據“鍵”(這只是數組中的 [0] 位置)合并這兩個數組
查看完整描述

4 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

我對 Python 也很陌生,但我認為如果兩個列表具有相同的鍵,這樣的事情應該有效:


list1 = [

    [1, "ford"],

    [2, "Ferrari"],

    [3, "Mercedes"],

    [4, "BMW"]

]

list2 = [

    [1, "mustang"],

    [2, "LaFerrari"],

    [3, "CLA"],

    [4, "M5"]

]

dict1 = dict(list1)

dict2 = dict(list2)

result = {}

for key,val in dict1.items():

    result[key] = [val]

for key, val in dict2.items():

    result[key].append(val)

print(result)

輸出


{1: ['ford', 'mustang'], 2: ['Ferrari', 'LaFerrari'], 3: ['Mercedes', 'CLA'], 4: ['BMW', 'M5']}

如前所述,我也是新手,所以可能有一種更“pythonic”的方式來做到這一點。


查看完整回答
反對 回復 2022-11-18
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

利用collections.defaultdict


from collections import defaultdict


result = defaultdict(list)

for k,v in list1 + list2:

    result[k].append(v)


print (dict(result))

#{2: ['ford', 'CLA'], 4: ['Ferrari', 'mustang'], 3: ['Mercedes', 'LaFerrari'], 1: ['BMW', 'M5'], 6: ['opel']}


查看完整回答
反對 回復 2022-11-18
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

看起來collections.defaultdict我會做的任務:


import collections

list1 = [

[1, "ford"],

[2,"Ferrari"],

[3, "Mercedes"],

[4, "BMW"]

]

list2 = [

[1, "mustang"],

[2,"LaFerrari"],

[3,"CLA"],

[4,"M5"]

]

result = collections.defaultdict(list)

for key, value in list1:

    result[key].append(value)

for key, value in list2:

    result[key].append(value)

result = dict(result)

print(result)

輸出:


{1: ['ford', 'mustang'], 2: ['Ferrari', 'LaFerrari'], 3: ['Mercedes', 'CLA'], 4: ['BMW', 'M5']}

在這里我使用defaultdict了lists,不像常見的,dict如果你嘗試用鍵下的值做一些還不存在的事情,它確實放置了list()ie empty list,然后做請求的動作(append在這種情況下是 ing )。最后我把它轉換成dict只是為了滿足你的要求(創建一個 python 字典)。


查看完整回答
反對 回復 2022-11-18
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

首先,dict使用 中的值創建一個list1。然后用 中的值更新 中的lists ,或者為 中不存在的鍵創建新的 s :dictlist2listlist2list1


result = {i: [j] for i, j in list1} # create initial dict from all values in list1

for i, j in list2:

    if i in result:

        result[i].append(j) # add to preexisting list corresponding to key

    else:

        result[i] = [j] # create new list corresponding to key

如果您list的 s 將有多個值,您可以在單獨函數中處理添加邏輯的地方使用它:


result = {}

def add_to_dict(d, key, val):

    if key in d:

        d[key].append(val)

    else:

        d[key] = [val]


for el in (list1 + list2):

    key, *vals = el

    for val in vals:

        add_to_dict(result, key, val)

在這里,不是假設每個子列表只有 2 個元素,我們可以將鍵解壓為第一個元素,將其余元素解壓到一個list名為vals. 然后,我們可以迭代list并執行相同的添加邏輯


查看完整回答
反對 回復 2022-11-18
  • 4 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號