-
慕侠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并执行相同的添加逻辑