首页 > 解决方案 > 根据值移除键值对

问题描述

a:{
   b:{cd:"abc",
      de:"rty"
     },
   c:{cd:"abc",
      de:"uuy"
     },
   d:{cd:"ap",
      de:"uy"
     }
  }

我想从此字典中打印 cd 和 de 的值,如果 cd 的值相同,那么我只想打印一次。预期输出:b abc rty d ap uy

如何检查 cd 的值是否重复?

编辑 :

 hash_set=set()
 hash_item=v1.get('query_hash',{}).get('sha256', "")
 if hash_item in hash_set:
 break
 else:
 hash_set.add(hash_item)

这是行不通的

标签: python

解决方案


如何检查 cd 的值是否重复?

如果您正在迭代内容并且您不想处理重复项,请保留一个包含您已经看过的内容的容器,如果已经看过则跳过它们。sets是成员资格测试的优秀容器,因为查找是 O(1) 并且集合不允许重复。

这是一个玩具示例。

stuff = 'anjdusttnnssajd'
seen = set()
for thing in stuff:
    if thing in seen:
        continue
    print(thing.upper())    # process thing
    seen.add(thing)

或者您可以只制作一组要处理的事物,然后处理该集合中的事物。

stuff = set(stuff)
for thing in stuff:
    print(thing.upper())

使用您的标准。

d = {'a':{'b':{'cd':"abc",'de':"rty"},
          'c':{'cd':"abc",'de':"uuy"},
          'd':{'cd':"ap",'de':"uy"}}}

seen = set()
for key,thing in d['a'].items():
    cd,de = thing['cd'],thing['de']
    if cd in seen:
        continue
    else:
        print(key, cd, de)
        seen.add(cd)

推荐阅读