连接包含多个字典的多个列表以创建一个列表

时间:2018-10-02 19:55:24

标签: python python-3.x

我有两个列表,每个列表包含字典:

list1 = [{'user':'John'},{'user':'Micheal'},{'user':'Sara'}]
list2 = [{'Status':'Active'},{'Status':'Active'},{'Status':'Inactive'}]

这些值在列表之间相对应,例如两个列表的索引0显示用户John处于活动状态,两个列表的索引1显示用户Michael处于非活动状态。 我想创建一个新的函数来做到这一点:

listsjoiner(list1,list2)

输出:

[{'user':'John','Status':'Active'},{'user':'Michael','status':'Active'},['user':'Sara','status':'Inactive}]

2 个答案:

答案 0 :(得分:2)

这就是我看zip函数的意思:

>>> result = [{**user_dict, **status_dict} for user_dict, status_dict in zip(list1, list2)]
>>> result
[{'user': 'John', 'Status': 'Active'}, {'user': 'Micheal', 'Status': 'Active'}, {'user': 'Sara', 'Status': 'Inactive'}]

答案 1 :(得分:0)

由于两个列表似乎都按照您希望它们加入的顺序排序,因此您可以将列表理解与*运算符(splatting)一起使用以获得所需的结果。例如:

list1 = [{'user':'John'},{'user':'Micheal'},{'user':'Sara'}]
list2 = [{'Status':'Active'},{'Status':'Active'},{'Status':'Inactive'}]

results = [{**list1[i], **list2[i]} for i in range(len(list1))]

print(results)

# OUTPUT
# [{'user': 'John', 'Status': 'Active'}, {'user': 'Micheal', 'Status': 'Active'}, {'user': 'Sara', 'Status': 'Inactive'}]