如何在同一个字典中合并多个值?
How to merge multiple values in a same dictionary?
我有两个字典 x
和 y
,它们由键和值组成。
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]]
希望对您有所帮助。如果有任何问题或者这不是您想要的,请告诉我!
我有两个字典 x
和 y
,它们由键和值组成。
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]]
希望对您有所帮助。如果有任何问题或者这不是您想要的,请告诉我!