1.查找两个字典的相同点,可以在两个字典的keys()或items()方法返回结果上执行集合操作.
a = {'a': 1, 'b': 10, 'c': 19, 'd': 2}
b = {'a': 1, 'e': 10, 'f': 19, 'd': 2}
#键 值相同
print(a.keys() & b.keys())
#{'d', 'a'}
#a中存在 b中不存在
print(a.keys() - b.keys())
#{'b', 'c'}
print(a.items() & b.items())
#{('d', 2), ('a', 1)}
print(a.items() - b.items())
#{('b', 10), ('c', 19)}
2.删除序列相同元素并保持顺序
#可哈希的序列
li = [1, 3, 4, 5, 5, 4, 6, 7]
def depue(li):
s = set()
for i in li:
if i not in s:
yield i
s.add(i)
print(list(depue(li)))
#[1, 3, 4, 5, 6, 7]
#消除不可哈希序列重复元素
dict1 = [{'a': 1, 'b': 10}, {'a': 1, 'b': 11}, {'a': 1, 'b': 10}, {'a': 11, 'b': 101}]
def clear(dict1, key=None):
tean = set()
for item in dict1:
val = item if key is None else key(item)
if val not in tean:
yield item
tean.add(val)
print(list(clear(dict1, key=lambda d:(d['a'], d['b']))))
# [{'a': 1, 'b': 10}, {'a': 1, 'b': 11}, {'a': 11, 'b': 101}]