我可以在Python中合并多个同名的dicts吗?

mspsb9vt  于 2023-01-29  发布在  Python
关注(0)|答案(2)|浏览(103)

我尝试在python中从API返回值创建一个新列表。此API调用的目的是提取一个司机姓名列表,并将它们与API服务本机的车辆ID配对。当前代码如下所示:

url = url

headers = {
    "accept": "application/json",
    "authorization": auth
}

response = requests.get(url, headers=headers)
response = response.json()
for doc in response['data']:
    try:
        doc['id'],
        doc['staticAssignedDriver']['name']
    except:
        pass
    else:
        names = {
            doc['staticAssignedDriver']['name']: doc['id']
        }
        names.update(names)
        print(type(names))
        print(names)

这将打印一个唯一名称和ID的列表作为单独的指令。

{'name1':'id1'}
<class 'dict'>
{'name2':'id2'}
<class 'dict'>

直到我从API中得到所有的name:id对。
但我想把它列成一个清单,就像这样:

{'name1': 'id1', 'name2': 'id2'}

看起来每个新的name/id对最终都是它自己的var 'names'。有没有一种方法可以使它成为它自己的单数dict,而不是单独的?

qyyhg6bp

qyyhg6bp1#

当你执行names = {whatever: whatever}时,你总是创建一个只有一个键和一个值的字典,如果你只想有一个字典可以反复更新,那么在循环之外创建字典,并且一次只给它赋一个值:

names = {}

for doc in ...:
   ...
   names[doc['staticAssignedDriver']['name']] = doc['id']
eimct9ow

eimct9ow2#

x = [{'name1':'id1'},
    {'name2':'id2'}]
d = {}
for dct in x:
    d.update({key: value for key, value in dct.items()})

print(d)
{'name1': 'id1', 'name2': 'id2'}

相关问题