如何将键值对的JSON数组转换为JSON对象?

2024-10-01 13:34:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我从网站上得到如下数据:

{
  ...
  u'rows':[
    [
      u'mail@example.com',
      u'74'
    ],
    [
      u'mail2@example.com',
      u'1'
    ],
    [
      u'mail3@example.com',
      u'1'
    ],
    ...
  ],

我只展示了我需要的数据。如何将其转换为json格式:

{u'mail@example.com': 74, u'mail2@example.com': 1, u'mail3@example.com': 1, ...}

我可以一个接一个地阅读元素:

if response.get('rows'):
    total = 0
    for row in response.get('rows'):
        total += int(row[1])
        logging.info(row[0]+": "+row[1])

但不知道下一步该怎么办。别以为我应该只生成字符串。


Tags: 数据comjson元素get网站exampleresponse
3条回答

您需要创建一个dict并用行的内容填充它:

d = {}
for row in response.get('rows'):
    d[row[0]] = row[1]

然后,如果需要json字符串表示:

json.dumps(d)
bbb = {}
aaa = {
   u'rows':[
    [
      u'mail@example.com',
      u'74'
    ],
    [
      u'mail2@example.com',
      u'1'
    ],
    [
      u'mail3@example.com',
      u'1'
    ],
  ],
}

for item in aaa['rows']:
    bbb[item[0]] = item[1]

print bbb

>>> {u'mail@example.com': u'74', u'mail2@example.com': u'1', u'mail3@example.com': u'1'}

像这样:

>>> first_json = { 'rows':[['mail@example.com', '74'],['mail2@example.com','1'],['mail3@example.com','1']]}
>>> second_json = {item[0]: item[1] for item in first_json['rows']}
>>> second_json
{'mail@example.com': '74', 'mail2@example.com': '1', 'mail3@example.com': '1'}
>>>

必须使用loads()将上述数据字符串加载为jsonfirst_json假设它作为json对象可用。然后在如上所述计算second_json之后,使用second_json上的dumps()获得输出json

编辑

看起来您正在计算特定电子邮件的电子邮件总数。在这种情况下,我将使用defaultdict

from collections import defaultdict

second_json = defaultdict(int)
for item in first_json['rows']:
    second_json[item[0]] += int(item[1])

然后按上面的说明打印出second_json

相关问题 更多 >