重命名可能存在或不存在的键(Python)

重命名可能存在或不存在的键(Python),python,dictionary,Python,Dictionary,我使用一个数据集,每个条目都用数字代码分类。只需要前两位数字,所以我只是基于这些数字求和 sum_dict = { k: sum(item[1] for item in g) for k, g in groupby(sorted( source_data.items()), key=lambda item: item[0][:2]) } 类别的数量是已知的,但并非所有类别都必须在每个实例中使用。如果2位数类别出现在源数据中,sum_dict将只包含该类别的条目

我使用一个数据集,每个条目都用数字代码分类。只需要前两位数字,所以我只是基于这些数字求和

sum_dict = {
    k: sum(item[1] for item in g) 
    for k, g in groupby(sorted(
        source_data.items()), key=lambda item: item[0][:2])
}
类别的数量是已知的,但并非所有类别都必须在每个实例中使用。如果2位数类别出现在源数据中,
sum_dict
将只包含该类别的条目

sum_dict = {
    '12': 15,
    '29': 3,
    '33': 22,
}
我想将
sum_dict
中的所有键更改为更具描述性的键,因此我将删除每个键,并将其替换为更具描述性的键。但是,如果字典的特定实例没有使用我随后重命名的键(本例中为“65”),则会出现键错误

我添加了
if
检查,这样我就可以重命名所有可能的键,即使它们不是每次都存在,但是有几十个if来完成这项任务似乎效率低下(而且更难阅读)。我是否错过了更好的方法

variable_array = [("12", "Alpha"),("29", "Beta") ... ("65","Delta")]
for number, var in variable_array:
    if number in sum_dict:
        sum_dict["{}: {}".format(number, var)] = sum_dict.pop(number)
这应该是你想要的


这应该满足您的需要

为您的姓名创建映射:

better_names = {'12': 'Alpha', '29': 'Beta', '33': 'Gamma', '65': 'Delta'}
现在,您可以在生成初始词典时使用这些词典,无需重命名:

sum_dict = {
    '{}: {}'.format(k, better_names[k]): sum(item[1] for item in g) 
    for k, g in groupby(sorted(
        source_data.items()), key=lambda item: item[0][:2])
}
但是,如果以后必须重命名,则可以在循环中使用相同的字典:

for key, name in better_names.items():
    if key in sum_dict:
        sum_dict['{}: {}'.format(key, name)] = sum_dict.pop(key)

为您的姓名创建映射:

better_names = {'12': 'Alpha', '29': 'Beta', '33': 'Gamma', '65': 'Delta'}
现在,您可以在生成初始词典时使用这些词典,无需重命名:

sum_dict = {
    '{}: {}'.format(k, better_names[k]): sum(item[1] for item in g) 
    for k, g in groupby(sorted(
        source_data.items()), key=lambda item: item[0][:2])
}
但是,如果以后必须重命名,则可以在循环中使用相同的字典:

for key, name in better_names.items():
    if key in sum_dict:
        sum_dict['{}: {}'.format(key, name)] = sum_dict.pop(key)