python字典

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}]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值