python是否具有某种内置功能来通知dict更新时哪些字典元素发生了变化?例如,我正在寻找这样的一些功能:
>>> a = {'a':'hamburger', 'b':'fries', 'c':'coke'}
>>> b = {'b':'fries', 'c':'pepsi', 'd':'ice cream'}
>>> a.diff(b)
{'c':'pepsi', 'd':'ice cream'}
>>> a.update(b)
>>> a
{'a':'hamburger', 'b':'fries', 'c':'pepsi', 'd':'ice cream'}
我正在寻找变化值的字典,如a.diff(b)的结果所示
否,但是您可以将dict归类为更改通知。
class ObservableDict( dict ):
def __init__( self, *args, **kw ):
self.observers= []
super( ObservableDict, self ).__init__( *args, **kw )
def observe( self, observer ):
self.observers.append( observer )
def __setitem__( self, key, value ):
for o in self.observers:
o.notify( self, key, self[key], value )
super( ObservableDict, self ).__setitem__( key, value )
def update( self, anotherDict ):
for k in anotherDict:
self[k]= anotherDict[k]
class Watcher( object ):
def notify( self, observable, key, old, new ):
print "Change to ", observable, "at", key
w= Watcher()
a= ObservableDict( {'a':'hamburger', 'b':'fries', 'c':'coke'} )
a.observe( w )
b = {'b':'fries', 'c':'pepsi'}
a.update( b )
请注意,此处定义的超类监视程序不会检查是否存在“真实”更改;它只是指出发生了变化。
行动时刻 - 更新MikroTik词典 Isaac给他的朋友发了电子邮件,通知他有关配置损坏的信息。 然后他的朋友回复并指示Isaac访问以下URL,其中显示了MikroTik支持的最新RADIUS属性: http://wiki.mikrotik.com/wiki/Manual:RADIUS_Client 虽然网页的内容最初有点令人困惑,但Isaac设法执行以下操作以修复其FreeRADIUS服务
问题内容: 我想用Python建立字典。但是,我看到的所有示例都是从列表中实例化字典等。.. 如何在Python中创建一个新的空字典? 问题答案: 无参数调用 或简单地写
问题内容: 我有一本代表书店的字典。键代表书名,值代表当前书的份数。从商店出售书籍时,书籍的份数必须减少。 我已经编写了减少售书数量的代码,但是在更新后打印字典时,我得到的是初始字典,而不是更新的字典。 我想以最简单的方式解决问题。我是否错过了代码中的任何逻辑或任何行? 问题答案: 好吧,您可以仅通过引用键直接从值中减去。我认为这更简单。 在您的情况下:
问题内容: 创建密钥后,是否可以向Python字典添加密钥?它似乎没有方法。 问题答案:
问题内容: 因此,我有一个python字典,将其称为,然后在稍后的某个时间将该字典的版本称为。我想找到和之间的所有更改。换句话说,添加,删除或更改的所有内容。棘手的是,值可以是整数,字符串,列表或字典,因此需要递归。这是我到目前为止所拥有的: 除非该值是一个列表,否则它将正常工作。我无法提出一种优雅的方式来处理列表,而又没有在此函数之后重复重复使用该函数的巨大变化。 有什么想法吗? 编辑:这与这篇
主要内容:Python创建字典,Python 访问字典,Python删除字典Python 字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。 字典类型是 Python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素。如图 1 所示。 图 1 映射关系示意图 字典中
本文向大家介绍Python合并2个字典成1个新字典的方法(9种),包括了Python合并2个字典成1个新字典的方法(9种)的使用技巧和注意事项,需要的朋友参考一下 字典是Python语言中唯一的映射类型。 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表。 字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其
本文向大家介绍Python合并字典,包括了Python合并字典的使用技巧和注意事项,需要的朋友参考一下 示例 考虑以下字典: Python 3.5+ 如本示例所示,重复的键映射到它们的最后一个值(例如,“ Clifford”覆盖“ Nemo”)。 Python 3.3以上 使用此技术,给定键的最前值优先,而不是最后一个(“ Clifford”被抛弃,取而代之的是“ Nemo”)。 Python 2