【问题标题】:how to group list of dictionaries in a simple dictionary according to this method如何根据此方法对简单字典中的字典列表进行分组
【发布时间】:2019-11-26 15:20:35
【问题描述】:

我会为字典列表应用以下代码:

x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}

z = {**x, **y}     # get z= {'a': 1, 'b': 3, 'c': 4} (without duplicated keys)

我创建了几个字典的列表 (List_Dict),如下所示:

List_Dict[0] = {'a': 1, 'b': 2}
List_Dict[1]  = {'c': 3, 'a': 4}
List_Dict[2]  = {'b': 1, 'c': 2}
...    ...    ...    ...    ...
List_Dict[5000]  = {'d': 3, 'a': 4}

列表包含 5000 部词典

我问是否有任何简单的方法可以在括号之间动态键入整个元素(5000)以应用此指令:

z = {**List_Dict[0],**List_Dict[1],**List_Dict[2] ....,**List_Dict[5000]} 

【问题讨论】:

标签: python


【解决方案1】:

在 O(n) 时间内完成此操作的方法是使用 dict.update 方法将所有条目收集到单个 dict 中。

result = dict()

for d in List_Dict:
    result.update(d)

使用update 优于{**result, **d} 语法,因为它会在每次迭代时创建一个新字典;有 n 次迭代,新字典的大小为 O(n),因此解决方案需要 O(n^2) 时间。

【讨论】:

    【解决方案2】:

    你可以简单地把它放在一个for循环中:

    z = {}
    for d in List_Dict:
        z = {**z, **d}
    print(z)
    

    【讨论】:

    • 这个解决方案不必要地是 O(n^2),因为它创建了 O(n) 个平均长度为 O(n) 的字典。
    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多