gpt4 book ai didi

python - 使用嵌套键、值创建新的嵌套字典

转载 作者:行者123 更新时间:2023-12-02 18:25:49 28 4
gpt4 key购买 nike

我有一个键值对字典,其中值本身就是一个字典。我想根据预定义的转换更改该嵌套字典中键值的名称。

我使用两个列表来匹配我尝试转换的嵌套键的值(Old_item1 应变为 New_item1):

comparison_list = ['Old_item1', 'Old_item2']
new_prods = ['New_item1', 'New_item2']

old_dict = {
'Company1':
{
'Old_item1':
{
'key1': val,
'key2': val
},
'Old_item2':
{
'key1': val,
'key2': val
}
}
}

我尝试过这个:

new_dict = {}
for i in comparison_list:
for j in new_prods:
new_dict['Company1'][j] = test['Company1'][i]

我收到一个 KeyError:KeyError:'Company1'

我添加到每个列表中的每个项目的所需输出是:

new_dict = {
'Company1':
{
'New_item1':
{
'key1': val # old item key, val
'key2': val # old item key, val
}
}
}

最佳答案

您可以创建一个从旧项目到新项目的映射字典,然后使用它为每个公司创建一个新的子字典。然后需要将其包装在公司的外循环中(尽管这里只有一个)。

例如:

comparison_list = ['Old_item1', 'Old_item2']
new_prods = ['New_item1', 'New_item2']

old_dict = {'Company1':
{'Old_item1':
{'key1': 2,
'key2': 3},
'Old_item2':
{'key1': 4,
'key2': 5}}}

key_mappings = dict(zip(comparison_list, new_prods))

new_dict = {k: {key_mappings[k1]: v1 for k1, v1 in v.items()}
for k, v in old_dict.items()}

print(new_dict)

给出:

{'Company1': {'New_item1': {'key1': 2, 'key2': 3}, 'New_item2': {'key1': 4, 'key2': 5}}}

这是我们使用的映射字典key_mappings:

{'Old_item1': 'New_item1', 'Old_item2': 'New_item2'}

关于python - 使用嵌套键、值创建新的嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70204900/

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