python - Python Dictionary - 迭代以从 JSON 响应中的确切键中检索值到集合中
问题描述
我想尝试修复我的脚本以将输出整理为有序且可读的内容。我有一个 JSON 响应,其中包含我需要收集到单独列表中的值(下面称为 new_report)。带有字典的 JSON 列表如下所示:
json_op = [{'Group': '1', 'hostname': 'host2', 'sw_version': '2.08', 'bios': '1.214'},
{'Group': '2', 'hostname': 'host45', 'sw_version': '2.15', 'bios': '1.224'},
{'Group': '3', 'hostname': 'host23', 'sw_version': '2.10', 'bios': '1.254'},
{'Group': '4', 'hostname': 'host100', 'sw_version': '2.20', 'bios': '1.234'}]
我编写了以下代码来遍历它并将“主机名”和“sw_version”的值检索到新字典中:
new_report = []
for item in json_op:
keys = ['hostname', 'sw_version']
hostname_report = {item[x] for x in keys if x in item}
new_report.append(hostname_report)
print(new_report)
当前输出是一个集合列表:
[{'2.08', 'host2'}, {'host45', '2.15'}, {'2.10', 'host23'}, {'2.20', 'host100'}]
不过,我真的很想实现这一点(只要保持主机名、sw_version 格式,顺序就无关紧要):
[{'host2', '2.08'}, {'host45', '2.15'}, {'host23', '2.10'}, {'host100', '2.20'}]
有谁知道我的代码中的列表理解哪里出了问题?
谢谢
解决方案
在 Python 中,set
s 不维护顺序。
您可以简单地使用元组:
替换{item[x] for x in keys if x in item}
为tuple(item[x] for x in keys if x in item)
推荐阅读
- python - 为什么我不能将字符串提供给 tf.placeholder?
- reactjs - 如何使用moment.js在数组中按降序对日期进行排序
- javascript - 如何从 Nightwatchjs 中的动态表行中选择收音机
- node.js - Mongoose - 如何将文档添加到具有该文档 ID 的数组中
- android - 带有多个 EditText 的软键盘跳过键入事件
- django - Django 应用程序尚未加载:如何导入模型
- sql - 从 Oracle 中的字符串连接填充日期时出错
- python - 一起使用 Vue.js 和 Flask
- python - 使用 PyMongo 的 Concat 数组因未知组运算符“$concatArrays”而失败
- javascript - 如何在需要时突出显示替代隐藏复选框输入的复选框伪元素