如何使用方法 Pop 在 Python 中更改字典的键?



嗯,我有一个字典,它存储从PDF文件中提取的信息。像这样:

{'B(姓名:':'监狱','H(年龄:':'25','J(性别:'男性'}

我正试图通过排除字符串"来"清理"这本词典;b( "h( "j( ";来自PDF,使用以下代码:

for k in mydict:
mydict[(k.split(')')[1])] = mydict.pop(k)

但是这个代码不起作用:;IndexError:列表索引超出范围";

我不明白为什么,因为当我用打印代替pop运行代码时,一切都很顺利:

for k in mydict:
print(k.split(')')[1])

我应该更改什么?

不能在遍历字典的同时向字典中添加元素或从字典中删除元素。两者都可以。你最好的选择是这样的:

new_dict = {}
for key, value in mydict.items():
new_dict[k.split(')')[1]] = value
mydict = new_dict

如果你对词典理解感到满意:

mydict = {k.split(')')[1]: value for key, value in mydict.items()}

它创建一个新字典,然后将其分配给mydict

假设

d = { 'B) NAME:': 'Jair', 'H) AGE: ': ' 25', 'J) Gender': 'Male'}

一个简单的基于正则表达式的解决方案与dict理解(创建新的dict(

{re.findall(".*)s(.*)", k)[0]: d[k] for k in d.keys()}

您也可以使用下面的代码块(在try/except中捕获运行时错误(来更改现有的dict.

for k in d.keys():
new_key = re.findall(".*)s(.*)", k)[0]
d[new_key] = d[k]
del d[k]

最新更新