python - (更多)嵌套字典理解:如何将内部值切换为键?
问题描述
与上一个问题非常相似,但并不完全相同。在该示例中,问题本质上是如何对“内部”字典的值执行某些功能-但外部和内部字典的键保持不变。我希望内部 dict 的值成为新 dict 的键,并且具有基于旧键的新值。
我有一个像这样的“嵌套”字典:
data = {
"A":{"X":1, "Y":2, "Z":3},
"B":{"X":4, "Y":5, "Z":6},
"C":{"X":7, "Y":8, "Z":9},
}
我想创建一个新字典,其中内部字典的值(即数字)作为新键,新值基于连接外部和内部字典的键:
new_data = {
1:"AX",
2:"AY",
3:"AZ",
4:"BX",
5:"BY",
6:"BZ",
7:"CX",
8:"CY",
9:"CZ",
}
根据链接的帖子,我尝试了
data = {inner_v: outer_k + inner_k for inner_k, inner_v in outer_v.items() for outer_k, outer_v in outer_dict.items()}
但是我收到一个错误,说 external_v 没有定义
解决方案
在理解中编写嵌套for
循环时,嵌套是从左到右发生的(反之亦然)。
因此,您只需将理解中的循环顺序交换outer_dict
为实际的理解data
。
data = {
"A":{"X":1, "Y":2, "Z":3},
"B":{"X":4, "Y":5, "Z":6},
"C":{"X":7, "Y":8, "Z":9},
}
outer_dict = data
new_data = {inner_v: outer_k + inner_k for outer_k, outer_v in outer_dict.items() for inner_k, inner_v in outer_v.items()}
print(new_data)
# {1: 'AX', 2: 'AY', 3: 'AZ', 4: 'BX', 5: 'BY', 6: 'BZ', 7: 'CX', 8: 'CY', 9: 'CZ'}
推荐阅读
- python - 计算维特比的转移概率矩阵
- python - 为什么 Jupyter 中的一些 shell 命令不需要感叹号?
- python - python数据框中的不同列聚合
- amazon-sqs - 由于保留期已过而删除的 SQS 消息是否计入已删除的消息数 CloudWatch 指标?
- django - 如何解决我的第一个 django 项目中的错误“找不到页面(404)”?
- reactjs - 无法将对象数组传递给 React 中的 setPeople 函数
- angular - 后回调没有被调用
- angular - ng-bootstrap 崩溃在 angular10 中不起作用?
- css - 如何更改特定 WooCommerce 类别的背景颜色?
- python - 为什么此导入代码在 Visual Studio Code 中有效但在 IDLE 中无效?