python - 我用 dict.pop 的“For”直到最后都没有做
问题描述
在 Python 中,我试图从 dicio2 重命名 itens,但代码在最后一个之前停止:
在这里,我有这个带有数字和数字名称的字典:
dicio1 = {"1":"one",
"2":"two",
"3":"three",
"4":"four",
"5":"five",
"6":"six"}
和 dicio2 的数字有一个值:
dicio2 = {"1":"QWE",
"2":"QWE",
"3":"QWE",
"4":"QWE",
"5":"QWE",
"6":"QWE"}
这是我在最终运行中需要的:
dicio2 = {'one': 'QWE',
'two': 'QWE',
'three': 'QWE',
'four': 'QWE',
'five': 'QWE',
'six': 'QWE'}
我使用了这段代码:
for v in dicio2:
if v in dicio1:
dicio2[dicio1[v]] = dicio2.pop(v)
但结果是:
{'6': 'QWE',
'one': 'QWE',
'two': 'QWE',
'three': 'QWE',
'four': 'QWE',
'five': 'QWE'}
之后,我放了一个 print(v):
for v in dicio2:
print(v)
if v in dicio1:
dicio2[dicio1[v]] = dicio2.pop(v)
结果是:
1
2
3
4
5
five
{'6': 'QWE', 'one': 'QWE', 'two': 'QWE', 'three': 'QWE', 'four': 'QWE', 'five': 'QWE'}
有人可以帮助我为什么会发生这种情况?我怎样才能在没有崩溃的情况下使用所有的itens?
我需要的完美模式是在不改变位置的情况下重命名密钥,但我在其他主题中看到这是不可能的,因为密钥无法重命名,解决方案是仅使用 POP 命令删除并创建另一个。
解决方案
也许你可以这样做:
output = {dicio1[k]: v for k, v in dicio2.items()}
print(output)
>>> {'one': 'QWE', 'two': 'QWE', 'three': 'QWE', 'four': 'QWE', 'five': 'QWE', 'six': 'QWE'}
推荐阅读
- .net - 如何将字符串拆分为多个变量并删除不需要的字符
- amazon-web-services - Terraform如何修复属性“路线”:需要一组对象
- android - ImageView 上的自定义 sharedElementEnterTransition
- c# - 如何从数组中找到最接近的数字,四舍五入
- firebase - 哪个更快:firebase-hosting+firebase 云功能或通过 HTTP 请求直接调用云功能
- c - 通过编写一些代码从 HC-05 数据模式传递到 HC-05 AT 命令模式
- express - 如何使用 passportjs 实现可选的两因素身份验证
- php - 如何使用 yoast seo 插件在 wordpress 中添加元关键字。?
- protocol-buffers - 协议缓冲区。版本 3.15.2
- c# - NSwag 为嵌套类型生成输出