我尝试创建一个将通过嵌套字典并将键值添加到嵌套值的函数,并创建一个新的嵌套键值对。例如,这个输入:
current_dict = {1: {'int1': 11}, 2: {'int1': 12}, 3: {'int1': 13}, 4: {'int1': 14},
5: {'int1': 15}}
看起来像这个输出:
new_dict = {1: {'int1': 11, 'int2': 12}, 2: {'int1': 12, 'int2', 14},
3: {'int1': 13, 'int2', 16}, 4: {'int1': 14, 'int2': 18}, 5: {'int1': 15, 'int2', 20}}
我正在处理一个非嵌套字典,类似于添加键值对以使用它创建一个新值:
int_dict = {1: 11, 2: 12, 3: 13, 4: 14, 5: 15}
new_dict2 = {}
def func2(k, v):
new_k = k + v
return new_k
for k, v in integer_dictionary.items():
new_dict2[k] = func2(k, v)
并返回:
{1: 12, 2: 14, 3: 16, 4: 18, 5: 20}
理想情况下,我想构建这个函数,以便能够处理如上所述的嵌套字典,但我不确定如何处理迭代嵌套元素。
答案 0 :(得分:2)
您可以使用词典理解:
current_dict = {1: {'int1': 11}, 2: {'int1': 12}, 3: {'int1': 13}, 4: {'int1': 14}, 5: {'int1': 15}}
new_dict = {a:{**b, 'int2':b['int1']+a} for a, b in current_dict.items()}
输出:
{1: {'int1': 11, 'int2': 12}, 2: {'int1': 12, 'int2': 14}, 3: {'int1': 13, 'int2': 16}, 4: {'int1': 14, 'int2': 18}, 5: {'int1': 15, 'int2': 20}}
编辑:无法理解:
def funct2(k, v):
return {**v, 'int2':v['int1']+k}
for a, b in current_dict.items():
current_dict[a] = funct2(a, b)
输出:
{1: {'int1': 11, 'int2': 12}, 2: {'int1': 12, 'int2': 14}, 3: {'int1': 13, 'int2': 16}, 4: {'int1': 14, 'int2': 18}, 5: {'int1': 15, 'int2': 20}}
答案 1 :(得分:1)
可以执行此操作的功能如下:
def add_new_value_from_key_value(a_dict, key_add_from, key_to_add):
a_dict = a_dict.copy()
for k, v in a_dict.items():
v[key_to_add] = k + v[key_add_from]
return a_dict
current_dict = {1: {'int1': 11}, 2: {'int1': 12}, 3: {'int1': 13},
4: {'int1': 14}, 5: {'int1': 15}
}
new_dict = {
1: {'int1': 11, 'int2': 12},
2: {'int1': 12, 'int2': 14},
3: {'int1': 13, 'int2': 16},
4: {'int1': 14, 'int2': 18},
5: {'int1': 15, 'int2': 20}
}
print(add_new_value_from_key_value(current_dict, 'int1', 'int2'))
assert new_dict == add_new_value_from_key_value(current_dict, 'int1', 'int2')
{
1: {'int1': 11, 'int2': 12},
2: {'int1': 12, 'int2': 14},
3: {'int1': 13, 'int2': 16},
4: {'int1': 14, 'int2': 18},
5: {'int1': 15, 'int2': 20}
}
答案 2 :(得分:0)
这应该有效:
current_dict = {1: {'int1': 11}, 2: {'int1': 12}, 3: {'int1': 13}, 4: {'int1': 14}, 5: {'int1': 15}}
new_dict = current_dict.copy()
for k, v in new_dict.iteritems():
v['int2'] = v['int1'] + k