我有 2 個串列,一個帶有重復的車牌號,另一個帶有每個車牌所屬的相應組。重復編號表示該板塊屬于多個組。我正在嘗試使用以下輸出制作字典:
L1 = ['173', '607', '607', '581', '522', '522']
L2 = ['fleet 6', 'fleet 4', 'fleet 6', 'Toyota', 'Maintenance', 'fleet 1']
# Desirable output
# '173': 'fleet 6'
# '607': ['fleet4', 'fleet6']
# '581': 'Toyota'
# '522': ['Maintenance', 'fleet 1']
我不知道如何將值聚集為 L2 中的串列以與 L1 中的重復項以及單項匹配,請問有什么想法嗎?
uj5u.com熱心網友回復:
試試這種方法,看看是否有幫助。這只是解決它的一種方法,概率。容易理解。
from collections import defaultdict
from pprint import pprint
L1 = ['173', '607', '607', '581', '522', '522']
L2 = ['fleet 6', 'fleet 4', 'fleet 6', 'Toyota', 'Maintenance', 'fleet 1']
# Desirable output
# '173': 'fleet 6'
# '607': ['fleet4', 'fleet6']
# '581': 'Toyota'
# '522': ['Maintenance', 'fleet 1']
dc = defaultdict(list)
for i in range(len(L1)):
item = L1[i]
dc[item].append(L2[i])
pprint(dc)
編輯:
正如@KellyBundy 建議的那樣,您也可以使用這種更多pythonic方法來解決它:
dc = defaultdict(list)
for item, plate in zip(L1, L2):
dc[item].append(plate)
pprint(dc)
uj5u.com熱心網友回復:
嘗試以下操作:
d = {}
L1 = ['173', '607', '607', '581', '522', '522']
L2 = ['fleet 6', 'fleet 4', 'fleet 6', 'Toyota', 'Maintenance', 'fleet 1']
for l1, l2 in zip(L1, L2):
d[l1] = d.get(l1, [])
d[l1].append(l2)
函式獲取專案的位置,如果d.get()鍵不存在,則回傳一個空串列
uj5u.com熱心網友回復:
使用setdefault:
d = {}
for k, v in zip(L1, L2):
d.setdefault(k, []).append(v)
print(d)
#{'173': ['fleet 6'], '607': ['fleet 4', 'fleet 6'], '581': ['Toyota'], '522': ['Maintenance', 'fleet 1']}
uj5u.com熱心網友回復:
你可以這樣做:
result = {key: [] for key in L1}
for i, value in enumerate(L2):
result[L1[i]].append(value)
簡單快捷!
腳步
使用 L1 的所有鍵和值中的空串列創建和 dict
添加 L2 的值(通過列舉上的索引知道鍵)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/490577.html
