用Python将两个列表转换成Json格式

15

我有两个列表

a=["USA","France","Italy"]
b=["10","5","6"]

我希望最终的结果以以下json格式呈现。

[{"country":"USA","wins":"10"},
{"country":"France","wins":"5"},
{"country":"Italy","wins":"6"},
]
我使用了zip(a,b)来合并两个对象,但无法对其命名。
5个回答

19

使用列表推导式

>>> [{'country': country, 'wins': wins} for country, wins in zip(a, b)]
[{'country': 'USA', 'wins': '10'},
 {'country': 'France', 'wins': '5'},
 {'country': 'Italy', 'wins': '6'}]

使用json.dumps获取JSON:

>>> json.dumps(
...     [{'country': country, 'wins': wins} for country, wins in zip(a, b)]
... )
'[{"country": "USA", "wins": "10"}, {"country": "France", "wins": "5"}, {"country": "Italy", "wins": "6"}]'

有人能解释一下这个Python句法的魔力吗?[{'country': country, 'wins': wins} for country, wins in zip(a, b)] 我刚在解释器中尝试了一下,它可以工作!但我找不到关于它的好文档。有人能指点我正确的方向吗?我对此非常感兴趣。 - Kyle Calica-St
1
@KyleCalica-St,请跟随答案中的链接。它将带领您了解有关列表推导的Python教程。 - falsetru

4

首先,您需要将其设置为列表,然后向其中添加项目。

import json

jsonList = []
a=["USA","France","Italy"]
b=["10","5","6"]

for i in range(0,len(a)):
    jsonList.append({"country" : a[i], "wins" : b[i]})


print(json.dumps(jsonList, indent = 1))

1
您可以将mapzip结合使用。
jsonized = map(lambda item: {'country':item[0], 'wins':item[1]}, zip(a,b))

元组参数解包在Python 3.x中不起作用。[http://legacy.python.org/dev/peps/pep-3113/] - falsetru
@falsetru 谢谢你指出来。我已经更新了我的答案。 - danbal

0

同时,仅需将两个列表合并为JSON格式:

def make_json_from_two_list():
    keys = ["USA","France","Italy"]
    value = ["10","5","6"]
    jsons = {}
    x = 0
    for item in keys:
        jsons[item[0]] = value[x]
        x += 1
    return jsons

print(ake_json_from_two_list())

结果>>>> {"美国":"10","法国":"5","意大利":"6"}


0
除了'falsetru'的回答之外,如果您需要一个实际的JSON对象(而不仅仅是具有JSON结构的字符串),您可以使用json.loads()并将json.dumps()输出的字符串作为参数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接