我需要比较Python中的字典,并在下面编写了以下代码:
diff_dict = {}
for key, value in old_dictionary.items():
for k, v in new_dictionry.items():
if k==key:
inner_dict = {}
for key1, value1 in value.items():
for k1, v1 in v.items():
if key1==k1 and value1!=v1:
compared_value = str(value1) + '_' + str(v1)
inner_dict.update({key1: compared_value})
diff_dict.update({k: inner_dict})
我有一些站点作为键,参数作为内键以及每个参数的值。我需要将当前词典与前一天的词典进行比较。
但这效率不高,需要半小时,但仍然没有完成。有什么有效的方法可以做到这一点吗?
我想用这样的结构得到一个新的嵌套字典:
{key: {inner_key: compared_value}}
比较值是由新值和旧值串联而成的,因此我以后可以用'_'进行拆分,并在Pandas中创建两列。
旧数据示例:
{'site-1/cell-1': {'tac' : 10, md: 5},
'site-2/cell-1': {'tac' : 10, md: 1}}
新:
{'site-1/cell-1': {'tac' : 10, md: 4},
'site-2/cell-1': {'tac' : 12, md: 1}}
所需的输出:
{{'site-1/cell-1': {md: '5_4'},
'site-2/cell-1': {'tac' : '10_12'}}
以下应该可以工作,并且比您的要快得多:
from collections import defaultdict
diff_dict = defaultdict(dict)
for key, value in old_dictionary.items():
v = new_dictionary.get(key, None)
if v:
for key1, value1 in value.items():
v1 = v.get(key1, None)
if v1 and value1 != v1:
compared_value = str(value1) + '_' + str(v1)
diff_dict[key].update({key1: compared_value})
同样,FYI用输入和期望的输出来证明一个最小的例子,确实会使想要帮助的人的生活更加轻松。下次请记住这一点。
我自己创建了一个:
old_dictionary = {'a': {'b': 1, 'c': 2}, 'd': {'f':5}}
new_dictionary = {'a': {'b': 2, 'c': 2}, 'd': {'f':6}}
产生:
defaultdict(<class 'dict'>, {'a': {'b': '1_2'}, 'd': {'f': '5_6'}})
并且如果最后的defaultdict
数据类型使您感到困惑,则始终可以转换为原始格式-dict
只需进行强制转换:
diff_dict = dict(diff_dict)
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras