gpt4 book ai didi

Python 字典 : changing the order of nesting

转载 作者:行者123 更新时间:2023-11-28 20:53:59 25 4
gpt4 key购买 nike

我有一个字典,有 300 个键值对,其中每个键都是整数,值是具有三个键值对的字典。内部字典都有相同的键,但值不同。整个事情看起来很像这样:

nested_dicts = 
{1: {'name1':88.4,
'name2':22.1,
'name3':115.7},
2: {'name1':89.4,
'name2':23.7,
'name3':117.9}
...
300:{'name1':110.1,
'name2':36.6,
'name3':122.4}
}

如果从上面的数据结构例子看不清楚,这个嵌套字典大概应该是这样的:

better_dict = 
{'name1': [88.4, 89.4, ..., 110.1],
'name2': [22.1, 23.7, ..., 36.6],
'name3': [115.7, 117.9, ..., 122.4]}

所以,我想做一个从 nested_dicts 到 better_dict 的转换。

我无法解决这个问题。我已经接近了,但我的麻烦来自于试图弄清楚如何确保结果列表的顺序正确。也就是说,列表中值的顺序应该对应于原始 nested_dict 的外部字典中的键。此外,我的代码使用了循环,但我觉得这是生成器/列表理解的自然应用。任何帮助,将不胜感激。

最佳答案

将输入字典调整为:

>>> nested_dicts
{0: {'name2': 22.1, 'name3': 115.7, 'name1': 88.4},
1: {'name2': 23.7, 'name3': 117.9, 'name1': 89.4},
2: {'name2': 36.6, 'name3': 122.4, 'name1': 110.1}}
>>> for i in sorted(nested_dicts):
for k, v in nested_dicts[i].items():
if k not in n:
n[k] = [None] * len(nested_dicts)
n[k][i] = v

>>> n
defaultdict(<class 'list'>, {'name2': [22.1, 23.7, 36.6],
'name3': [115.7, 117.9, 122.4], 'name1': [88.4, 89.4, 110.1]})

我必须指出,考虑到对键的限制,您的原始结构只需要是字典列表即可。

ETA:您要求保留键顺序需要在原始 nested_dict 中使用适当的索引。即需要有一个从0开始的连续序列。

关于Python 字典 : changing the order of nesting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3167143/

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