python 将二维列表转换为字典,其中将值复制为键,将其余值复制为列表

5t7ly7z5  于 2022-11-21  发布在  Python
关注(0)|答案(3)|浏览(151)

如不导入任何库要执行此操作

x=[['A',1],['B',2],[C,3]]
y=[['A',100],['B',200],[C,300]]
z=[['A',1000],['B',2000],[C,3000]]

output must:
{'A':[1,100,1000],'B':[2,200,2000],'C':[3,300,3000]}

我试探着:

dic=dict(filter(lambda i:i[0]==i[0],[x,y,z]))

因此,作为数据,我需要第一个复制的值作为键,以及公共值作为列表作为此键

ia2d9nvy

ia2d9nvy1#

请尝试:

x = [["A", 1], ["B", 2], ["C", 3]]
y = [["A", 100], ["B", 200], ["C", 300]]
z = [["A", 1000], ["B", 2000], ["C", 3000]]

out = {}
for l in (x, y, z):
    for a, b in l:
        out.setdefault(a, []).append(b)

print(out)

印刷品:

{"A": [1, 100, 1000], "B": [2, 200, 2000], "C": [3, 300, 3000]}

编辑:没有dict.setdefault

x = [["A", 1], ["B", 2], ["C", 3]]
y = [["A", 100], ["B", 200], ["C", 300]]
z = [["A", 1000], ["B", 2000], ["C", 3000]]

out = {}
for l in (x, y, z):
    for a, b in l:
        if a in out:
            out[a].append(b)
        else:
            out[a] = [b]

print(out)
ulydmbyx

ulydmbyx2#

您可以使用zip将列表合并为元组列表,并使用setdefault将它们插入dict

d = dict()
for k, v in zip(*zip(*x, *y, *z)):
    d.setdefault(k, []).append(v)

print(d) # {'A': [1, 100, 1000], 'B': [2, 200, 2000], 'C': [3, 300, 3000]}
e0bqpujr

e0bqpujr3#

让我们用一本字典来理解:

dic_={x[0]: [x[1], y[1],z[1]] for (x,y,z) in zip(x, y,z)}

输出

>>> dic
>>> {'A': [1, 100, 1000], 'B': [2, 200, 2000], 'C': [3, 300, 3000]}

相关问题