我想更改词典中的关键字名称,我使用的代码如下:
for key in my_dict_other:
print(key)
new_key = key + '/' + str(my_dict[key])
print(new_key)
my_dict_other[new_key] = my_dict_other.pop(key)
我遇到的问题是,在第一次成功编写代码之后,出现了一个关键错误
输出:
38-7
38-7/[2550, 1651]
13-9
13-9/[2550, 1651]
16-15
16-15/[5100, 3301]
31-0/[5400, 3601]
Traceback (most recent call last):
new_key = key + '/' + str(my_dict[key])
KeyError: '31-0/[5400, 3601]'
每次都在一个不同的键上得到错误,所以似乎无法理解问题的模式或者我的代码有什么问题
编辑:结构my_dict_other
:
'41-3': [['2436', '2459', '1901', '2152'],
['2704', '2253', '2442', '2062'],
['2763', '2595', '2498', '2518'],
['2190', '1918', '1970', '1875'],
['3154', '2442', '3023', '2417'],
['3360', '2481', '3252', '2458'],
['653', '1916', '430', '1874'],
my_dict
的结构:
'1-0': [5400, 3601],
'1-1': [2550, 1651],
'1-3': [5400, 3601],
'1-4': [5400, 3601],
'1-5': [5400, 3601],
[为了完整性]除了schwobasegll的答案之外,您还可以将新的键值写入一个新的字典,其中包含新的名称:
但作为伊夫·库尼斯前面提到过,您需要确保my\u dict字典包含相同的键…您从.pop调用中得到该键错误的原因可能是因为该键不在my\u dict中
您在迭代dict时弹出dict并将其添加到dict中。别那么做。例如,您可以在提取的密钥列表上循环:
您的代码有几个问题:
my_dict_other
的键,并为每个键执行my_dict[key]
。你确定my_dict
包含所有这些吗?如果没有,那么在那里做my_dict.get(key, '')
或者添加一个if
检查。你知道吗'31-0/[5400, 3601]'
,在某个时刻它变成了您的key
(如for key in my_dict_other
键),当然它在my_dict
中不存在,因此KeyError
。你知道吗相关问题 更多 >
编程相关推荐