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

所以我尝试了很多方法来做到这一点,但找不到有效的解决方案。在这个问题中,我有两个 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] 位置)合并这两个数组


墨色风雨
浏览 94回答 4
4回答

慕侠2389804

我对 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”的方式来做到这一点。

幕布斯6054654

利用collections.defaultdictfrom collections import defaultdictresult = 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']}

MYYA

看起来collections.defaultdict我会做的任务:import collectionslist1 = [[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 字典)。

元芳怎么了

首先,dict使用 中的值创建一个list1。然后用 中的值更新 中的lists ,或者为 中不存在的键创建新的 s :dictlist2listlist2list1result = {i: [j] for i, j in list1} # create initial dict from all values in list1for 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并执行相同的添加逻辑
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python