相关疑难解决方法(0)

如何在单个表达式中合并两个词典?

我有两个Python字典,我想编写一个返回这两个字典的表达式,合并.update()如果它返回结果而不是就地修改dict,那么该方法将是我需要的.

>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 10, 'c': 11}
>>> z = x.update(y)
>>> print(z)
None
>>> x
{'a': 1, 'b': 10, 'c': 11}
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得最终合并的词典z,不是x吗?

(要清楚的是,最后一次胜利的冲突处理dict.update()也是我正在寻找的.)

python merge dictionary

4349
推荐指数
41
解决办法
168万
查看次数

如何将一个dicts列表合并为一个单词?

我怎么能把这样的词典列表

[{'a':1}, {'b':2}, {'c':1}, {'d':2}]
Run Code Online (Sandbox Code Playgroud)

进入这样一个单词

{'a':1, 'b':2, 'c':1, 'd':2}
Run Code Online (Sandbox Code Playgroud)

python

92
推荐指数
7
解决办法
6万
查看次数

如何使用相同的键合并多个dicts?

我有多个dicts /键值对,如下所示:

d1 = {key1: x1, key2: y1}  
d2 = {key1: x2, key2: y2}  
Run Code Online (Sandbox Code Playgroud)

我希望结果是一个新的dict(如果可能的话,以最有效的方式):

d = {key1: (x1, x2), key2: (y1, y2)}  
Run Code Online (Sandbox Code Playgroud)

实际上,我希望结果d是:

d = {key1: (x1.x1attrib, x2.x2attrib), key2: (y1.y1attrib, y2.y2attrib)}  
Run Code Online (Sandbox Code Playgroud)

如果有人告诉我如何获得第一个结果,我可以弄清楚其余部分.

python merge dictionary

56
推荐指数
5
解决办法
9万
查看次数

合并几个python词典

我必须合并python字典列表.例如:

dicts[0] = {'a':1, 'b':2, 'c':3}
dicts[1] = {'a':1, 'd':2, 'c':'foo'}
dicts[2] = {'e':57,'c':3}

super_dict = {'a':[1], 'b':[2], 'c':[3,'foo'], 'd':[2], 'e':[57]}    
Run Code Online (Sandbox Code Playgroud)

我写了以下代码:

super_dict = {}
for d in dicts:
    for k, v in d.items():
        if super_dict.get(k) is None:
            super_dict[k] = []
        if v not in super_dict.get(k):
            super_dict[k].append(v)
Run Code Online (Sandbox Code Playgroud)

它可以更优雅/优化呈现吗?

注意 我在SO上发现了另一个问题,但它关于合并2个字典.

python merge dictionary

38
推荐指数
6
解决办法
4万
查看次数

递归合并dicts,以便将具有共享密钥的元素组合到一个列表中

我有两个想要合并的词组:

a = {"name": "john",
     "phone":"123123123",
     "owns": {"cars": "Car 1", "motorbikes": "Motorbike 1"}}

b = {"name": "john",
     "phone":"123",
     "owns": {"cars": "Car 2"}}
Run Code Online (Sandbox Code Playgroud)

如果a并且b在同一嵌套级别上具有公共密钥,则结果应该是一个列表,其中包含两个值,该值被指定为共享密钥的值.

结果应如下所示:

{"name": "john",
 "phone":["123123123","123"],
 "owns": {"cars": ["Car 1", "Car 2"], "motorbikes": "Motorbike 1"}}
Run Code Online (Sandbox Code Playgroud)

使用a.update(b)不起作用,因为它用共享值覆盖a共享值b,这样结果是这样的:

{'name': 'john', 'phone': '123', 'owns': {'cars': 'Car 2'}}
Run Code Online (Sandbox Code Playgroud)

目标是合并dicts而不覆盖,并保留与特定密钥相关的所有信息(在任何一个dicts中).

python union merge dictionary

4
推荐指数
1
解决办法
575
查看次数

标签 统计

python ×5

dictionary ×4

merge ×4

union ×1