利用python中集合操作寻找相同点以及重复项

  1. 找出字典中的相同与不同
# -*- coding: utf-8 -*-
# @Time    : 2024/7/17 下午8:57
# @Author  : s
a = {
    'x': 1,
    'y': 2,
    'z': 3
}
b = {
    'w': 10,
    'x': 11,
    'y': 2
}
# 找a,b 相同的key
common_key = a.keys() & b.keys()
# 找在a不在b
diff_akey = a.keys() - b.keys()
# 找a,b相同的key,value
common_k_v = a.items() & b.items()
print(common_key)
print(diff_akey)
print(common_k_v)
  1. 从序列中移除重复项并保持元素间的顺序
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2024/7/17 下午9:41
# @Author  : s


def dedupe(items):
    """可哈希"""
    seen = set()
    for item in items:
        if item not in seen:
            yield item
            seen.add(item)


def dedupe2(items, key=None):
    """不可哈希"""
    seen = set()
    for item in items:
        val = item if key is None else key(item)
        if val not in seen:
            yield item
            seen.add(val)

if __name__ == '__main__':
    a1 = [1, 5, 2, 1, 9, 1, 5, 10]
    print(list(dedupe(a1)))
    a2 = [{'x': 1, 'y': 2}, {'x':1, 'y':3}, {'x':1, 'y':2}, {'x':2, 'y':4}]
    print(list(dedupe2(a2, key=lambda d: (d['x'],d['y']))))
    print(list(dedupe2(a2, key=lambda d: d['x'])))

如果只是去除重复项,并不关心元素间的顺序,最简单的方法:set([1,2,3,2,3,5]) 结果为:{1,2,3,5}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容