Ben*_*enn 1 python dictionary python-3.x
有没有办法在不创建新字典的情况下将字符串添加到字典中的所有键?我尝试了几种方法,但出现以下错误:
for key in result:
RuntimeError: dictionary keys changed during iteration
Run Code Online (Sandbox Code Playgroud)
我的代码:
def get_temps_servers():
result = dict(re.findall(r"^(.*?) {2,}.*?(\d+C|\d+Watts)", text, flags=re.M))
name = "Test"
for key in result:
x = f"{name} {key}"
result[x] = result[key]
del result[key]
print(result)
return result
Run Code Online (Sandbox Code Playgroud)
这是我的原始字典的样子:
result = {'CPU1 Temp': '35C', 'CPU2 Temp': '39C', 'System Board Inlet Temp': '18C', 'System Board Exhaust Temp': '29C', 'System Board Pwr Consumption': '130Watts'}
Run Code Online (Sandbox Code Playgroud)
如果我创建一个从原始字典复制的新字典,效果很好,如下所示:
def get_temps_servers():
result = dict(re.findall(r"^(.*?) {2,}.*?(\d+C|\d+Watts)", text, flags=re.M))
name = "Test"
res = {f"{name} {key}": val for key, val in result.items()}
print(res)
return res
Run Code Online (Sandbox Code Playgroud)
这是结果:
res = {'Test CPU1 Temp': '35C', 'Test CPU2 Temp': '39C', 'Test System Board Inlet Temp': '18C', 'Test System Board Exhaust Temp': '29C', 'Test System Board Pwr Consumption': '130Watts'}
Run Code Online (Sandbox Code Playgroud)
有没有办法在不创建新字典的情况下获得所需的结果?
这是可能的,但一团糟。Mad Physicist 给出的答案是有效的 - 但存在边缘情况,您需要制作字典键的列表副本才能使其工作。
使用字典理解要容易得多,这只是一行。
name = 'Test'
result = {f"{name} {key}" : value for key, value in result.items()}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |