4 回答

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”的方式來做到這一點。

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']}

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 字典)。

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并執行相同的添加邏輯
添加回答
舉報