【问题标题】:Extracting Key value pair in python在python中提取键值对
【发布时间】:2021-04-03 00:37:45
【问题描述】:

我有如下 json:

{
  "values" :[
  {
    "cor": "1234567",
    "num": "123456789"
  },
  {
    "cor": "45676677",
    "num": "1234567890"
  },
  {
    "cor": "67899909",
    "num": "1235467898"
  }
]
}

我需要如下输出:

{ "values" :[ { "cor": "1234567", "num": "123456789" }]}
{ "values" :[ { "cor": "45676677", "num": "1234567890" }]}
{ "values" :[ { "cor": "67899909", "num": "1235467898" }]}

我可以分别提取键和值,但无法以我需要的上述 json 格式创建 json。如果有人可以提供帮助,请不胜感激。

我用来提取键值对的代码很少:

for key in data.keys():
    print(key);
for value in data.values():
    print(value);
for item in data["values"]:
    print(item);

【问题讨论】:

  • 所提到的输出实际上不是一个有效的 JSON,除非它是一个字典列表。例如:[{ "values" :[ { "cor": "1234567", "num": "123456789" }]},{ "values" :[ { "cor": "45676677", "num": "1234567890" }]}, { "values" :[ { "cor": "67899909", "num": "1235467898" }]}]。你想要这个吗?

标签: python json python-3.x key-value


【解决方案1】:

如果通过“输出”,你的意思是打印到控制台,有这样的代码:

for item in my_json["values"]:
    print ({"values":[item]})

作为一个列表,它应该是my_list = [{'values':[value]}) for value in my_json['values']],但这与您提供的格式不匹配。

如果你想要一个字符串,你可以my_string = '/n'.join(str({'values':[value]}) for value in my_json['values'])

Python 中的默认设置是将引号打印为单引号,因此如果您真的需要双引号,则必须进行一些字符串格式化,例如 my_string.replace('\'','"')

替换的语法有点混乱,因为您必须将要替换的字符串括在引号中,但引号是您要替换的内容,因此您必须执行一些复杂的操作,例如转义引号或使用文档字符串引号分界。

【讨论】:

  • 这是我正在寻找的信息。我差点错过了一个小部分。感谢您的帮助。
【解决方案2】:

这将创建您正在寻找的输出列表

result = []
for value in data['values']:
    result.append({'values': [value]})

输出:

[{'values': [{'cor': '1234567', 'num': '123456789'}]}, {'values': [{'cor': '45676677', 'num': '1234567890'}]}, {'values': [{'cor': '67899909', 'num': '1235467898'}]}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多