我试图弄清楚dict中的差异,无论是添加还是删除某些内容,还是从中删除.
以下是添加值的情况:
original = {0: None, 1: False, 2: [16]}
new = {0: None, 1: False, 2: [2, 16]}
difference = True, {2: 2} # True = Added
Run Code Online (Sandbox Code Playgroud)
以下是删除值的情况:
original = {0: None, 1: False, 2: [16, 64]}
new = {0: None, 1: False, 2: [64]}
difference = False, {2: 16} # False = Removed
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何收集差异.有人会碰巧知道如何实现这样的结果吗?
额外信息(不知道你是否需要这个):
下面是一个函数的链接,该函数可以生成两个字典的“差异”,后面是附加注释/代码示例:
http://code.activestate.com/recipes/576644-diff-two-dictionaries/
包括以下代码:
KEYNOTFOUND = '<KEYNOTFOUND>' # KeyNotFound for dictDiff
def dict_diff(first, second):
""" Return a dict of keys that differ with another config object. If a value is
not found in one fo the configs, it will be represented by KEYNOTFOUND.
@param first: Fist dictionary to diff.
@param second: Second dicationary to diff.
@return diff: Dict of Key => (first.val, second.val)
"""
diff = {}
# Check all keys in first dict
for key in first.keys():
if (not second.has_key(key)):
diff[key] = (first[key], KEYNOTFOUND)
elif (first[key] != second[key]):
diff[key] = (first[key], second[key])
# Check all keys in second dict to find missing
for key in second.keys():
if (not first.has_key(key)):
diff[key] = (KEYNOTFOUND, second[key])
return diff
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21645 次 |
| 最近记录: |