gpt4 book ai didi

python - 如何扩展字典以包含所有匹配值?

转载 作者:行者123 更新时间:2023-11-28 17:56:18 24 4
gpt4 key购买 nike

我有这样的字典:

{
'key1': [1,2,3],
'key2': [4,5,6],
'1': [4,5],
'4': [4,6]
}

现在,我需要解压缩这个字典,以便所有也作为键出现的值附加到原始键。我的意思是结果应该是:

{
'key1': [1,2,3,4,5,6],
'key2': [4,5,6]
'1': [4,5,6]
'4': [4,6]
}

基本上 key1 中的 1 值具有 {'1':[4,5,6]} 中的键值对。所以我需要将其附加到原始 key1。然后 4 也有一个相应的键值对,因此它也应该附加到 key1,因为 key1 现在有 4。

注意我事先不知道字典的“深度”。所以我需要一个可扩展到任意深度的解决方案

到目前为止我已经试过了:

new_dict = {}
def expand(dict):
for k in dict:
for dep in dict[k]:
val = dict.get(dep)
new_dict[k] = [dep, val]
return new_dict

但是这个解只能走2个深度。而且我不确定如何在任意深度捕获更多的键匹配。

最佳答案

您可以使用 while 循环来继续扩展 dict 的每个子列表,其中包含不在旧子列表中的项目的匹配键中的项目。使用集合有效地获得这样的增量:

def expand(d):
for lst in d.values():
old = set()
new = set(lst)
while True:
delta = new - old
if not delta:
break
old = new.copy()
for i in map(str, delta):
if i in d:
new.update(d[i])
lst[:] = new
return d

因此给定您的示例输入作为变量 dexpand(d) 返回:

{'key1': [1, 2, 3, 4, 5, 6], 'key2': [4, 5, 6], '1': [4, 5, 6], '4': [4, 6]}

关于python - 如何扩展字典以包含所有匹配值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58090965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com