相关疑难解决方法(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万
查看次数

将字典附加到字典?

我有两个现有的词典,我希望将其中一个词典"追加"到另一个词典中.我的意思是,其他字典的关键值应该被制作成第一个字典.例如:

orig = {
   'A': 1,
   'B': 2,
   'C': 3,
}

extra = {
   'D': 4,
   'E': 5,
}

dest = # something here involving orig and extra

print dest
{
   'A': 1,
   'B': 2,
   'C': 3,
   'D': 4,
   'E': 5
}
Run Code Online (Sandbox Code Playgroud)

我认为这一切都可以通过for循环实现(也许?),但是有一些字典方法或任何其他模块可以为我保存这份工作吗?我正在使用的实际词典真的很大......

python dictionary

300
推荐指数
7
解决办法
44万
查看次数

collections.ChainMap的目的是什么?

在Python 3.3中,一个ChainMap类被添加到collections模块中:

提供了一个ChainMap类,用于快速链接多个映射,以便将它们视为一个单元.它通常比创建新字典和运行多个update()调用快得多.

例:

>>> from collections import ChainMap
>>> x = {'a': 1, 'b': 2}
>>> y = {'b': 10, 'c': 11}
>>> z = ChainMap(y, x)
>>> for k, v in z.items():
        print(k, v)
a 1
c 11
b 10
Run Code Online (Sandbox Code Playgroud)

它是由动机这个问题,并通过公开这一个(没有PEP创建).

据我所知,它是一个替代,有一个额外的字典,并用update()s 维护它.

问题是:

  • 用例ChainMap包括哪些用例?
  • 有真实世界的例子ChainMap吗?
  • 它是否用于切换到python3的第三方库?

额外问题:有没有办法在Python2.x上使用它?


我在Transforming Code into Beautiful, Idiomatic PythonRayCon Hettinger的PyCon演讲中听说过它,我想将它添加到我的工具包中,但我不知道何时应该使用它.

python collections dictionary data-structures python-3.x

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

如何将2个Python词典变为1?

可能重复:
Python"扩展"字典

我知道可以追加或扩展Python列表.有没有一种简单的方法可以将两个Python字典与唯一键组合在一起,例如:

basket_one = {'fruit': 'watermelon', 'veggie': 'pumpkin'}
basket_two = {'dairy': 'cheese', 'meat': 'turkey'}
Run Code Online (Sandbox Code Playgroud)

然后我想要一大篮子的食物:

basket = {
    'fruit': 'watermelon', 
    'veggie': 'pumpkin', 
    'dairy': 'cheese', 
    'meat': 'turkey'
}
Run Code Online (Sandbox Code Playgroud)

如何在Python中执行上述操作?

python merge dictionary

16
推荐指数
2
解决办法
3963
查看次数

python词典的更新方法不起作用

我有两本词典.

a = {"ab":3, "bd":4}
b = {"cd":3, "ed":5}` 
Run Code Online (Sandbox Code Playgroud)

我想把它们结合起来{'bd': 4, 'ab': 3, 'ed': 5, 'cd': 3}.

由于说,a.update(b)可以完成它.但是当我尝试时,我得到:

type(a.update(b)) #--> type 'NoneType'
Run Code Online (Sandbox Code Playgroud)

有谁愿意向我解释为什么我不能获得字典类型?

我也试过这个,它做得很好:

type(dict(a,**b)) #-->type 'dict'
Run Code Online (Sandbox Code Playgroud)

这两种方法有什么区别,为什么第一种方法不起作用?

python dictionary

1
推荐指数
2
解决办法
3068
查看次数