如何在同一个字典中合并多个值?

How to merge multiple values in a same dictionary?

我有两个字典 xy,它们由键和值组成。

x(其 'values')显示地址(我想合并到 y)。

y表示'values'的字典,我要合并

例如:x = { 1: [1,2], ...} 即,我想合并 y 字典的第一和第二 'values'。

因此所需的输出将是 [0,1,2,3]

4:[2,5] 类似,它是 [2,3,29,30,31]

有没有可能在python中做这个操作,最后把这个结果放到每个y值的单独列表中?

x = { 1:[1,2], 2:[2,3], 3:[3,4], 4:[2,5]} 

y = { 1:[0,1], 2:[2,3], 3:[4,5], 4:[6,7], 5:[29,30,31]  }

期望输出:

[0,1,2,3]
[2,3,4,5]
[4,5,6,7]
[2,3,29,30,31]

其实你只需要一行:

[sum([y[index] for index in v], start=[]) for k, v in x.items()]

这给出:

[[0, 1, 2, 3], [2, 3, 4, 5], [4, 5, 6, 7], [2, 3, 29, 30, 31]]

如果要打印所有 sub-lists:

for k, v in x.items():
    print(sum([y[index] for index in v], start=[]))

输出:

[0, 1, 2, 3]
[2, 3, 4, 5]
[4, 5, 6, 7]
[2, 3, 29, 30, 31]

One-liner

my_list = [[j for s in x[i] for j in y[s]] for i in x]

更长但可能更具可读性

x = {1: [1,2], 2: [2,3], 3: [3,4], 4: [2,5]}

y = {1: [0,1], 2: [2,3], 3: [4,5], 4: [6,7], 5: [29,30,31]}

my_list = []

for i in x:
    temp = []
    my_list.append(temp)
    for j in x[i]:
        temp.extend(y[j])

print(my_list)

对于复杂的列表理解,我更喜欢明确地写出循​​环以提高可读性。一个片段是否比另一个片段更易读当然是见仁见智了。

输出

[[0, 1, 2, 3], [2, 3, 4, 5], [4, 5, 6, 7], [2, 3, 29, 30, 31]]

希望对您有所帮助。如果有任何问题或者这不是您想要的,请告诉我!