【python对比list列表里的dict字典差异,非difference方式】

文章讲述了如何在Python中比较两个包含字典的列表的差异,不使用set.difference方法。通过遍历列表,找出被删除和新增的元素,分别存储并打印出来,以了解字典的变化情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python对比list里的字典差异,非difference方式

举例子我们拥有这样的列表:

#旧的
a = [{'aaa': 'docx', 'path': 'C:\\Users\\', 'saveas': 'aaa aaaSystem User Manual v1.0.docx', 'tname': 'template.docx'}, {'aaa': 'xlsx', 'path': 'C:\\Users\\', 'saveas': 'aaa Employee Payroll (202210)-confidential.xlsx', 'tname': 'template.xlsx'}]

# 新的
b = [{'aaa': 'docx', 'path': 'C:\\Users\\', 'saveas': 'aaa aaaSystem User Manual v1.0.docx', 'tname': 'templatebb.docx'}, {'aaa': 'xlsx', 'path': 'C:\\Users\\', 'saveas': 'aaa Employee Payroll (202210)-confidential.xlsx', 'tname': 'templatebbb.xlsx'}]

需要实现的目的是,比较这两个列表里的字典每次发生了什么变化,有什么差异

按照传统方式使用set.difference方式不可行,因为list内部是字典类型,会报错,所以可以使用如下方式得到结果。

delete = list()
# 会打印出删掉的
for i in a:
    if i not in b:
        delete.append(i)
print("删掉的")
print(delete)

# 会打印新的出来
new = list()
for i in b:
    if i not in a:
        new.append(i)
print("新增的")
print(new)
回答: 在Python中,可以使用一些方法来对比两个字典差异。一种常用的方法是使用set()函数将两个字典的键转换为集合,然后使用集合的差集操作来找出两个字典之间的差异。具体步骤如下: 1. 将两个字典的键转换为集合: set1 = set(dict1.keys()) set2 = set(dict2.keys()) 2. 找出两个字典的键的差异: diff_keys = set1.symmetric_difference(set2) 3. 遍历差异的键,找出差异的值: diff_values = {} for key in diff_keys: if key in dict1 and key in dict2: diff_values\[key\] = (dict1\[key\], dict2\[key\]) elif key in dict1: diff_values\[key\] = (dict1\[key\], None) else: diff_values\[key\] = (None, dict2\[key\]) 4. 打印差异的键和值: for key, value in diff_values.items(): print(f"键 '{key}' 的差异:{value}") 这样就可以找出两个字典之间的差异,并打印出差异的键和值。这个方法可以用于验证字典对象的差异性,特别是在软件版本升级时验证API接口返回的数据是否一致。\[1\]\[2\] #### 引用[.reference_title] - *1* *2* [用python对比两个字典差异](https://blog.csdn.net/google915/article/details/129917785)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值