gpt4 book ai didi

python - 过滤字典中常见的子字典键

转载 作者:太空狗 更新时间:2023-10-30 02:02:59 29 4
gpt4 key购买 nike

如何过滤父字典中其他子字典键中存在的所有公共(public)子字典键

d = {
'0': {'key_x': 0, 'key_y': 15, 'key_z': 41}
'1': {'key_x': 5, 'key_y': 22}
'2': {'key_x': 6, 'key_y': 41}
}

result ['key_x', 'key_y']

目前的解决方案是

intersect = {}
for k in corner_values.keys():
for j in corner_values[k]:
if j not in intersect:
intersect[j] = 1
else:
intersect[j] += 1

for k in intersect:
if intersect[k] != len(corner_values.keys()):
del intersect[k]

有没有更简单的解决方案?

最佳答案

您可以 map词典到set然后 reduce使用 set.intersection :

>>> from functools import reduce # if you are using Python 3
>>> d = {
... '0': {'key_x': 0, 'key_y': 15, 'key_z': 41},
... '1': {'key_x': 5, 'key_y': 22},
... '2': {'key_x': 6, 'key_y': 41}
... }
>>> reduce(set.intersection, map(set, d.values()))
{'key_x', 'key_y'}

注意:在 Python 3 中,reduce 已移至 functools

更新:如@John 的 answer 所示, set.intersection 可以处理任意数量的集合,因此甚至不需要 reduce。只是 set.intersection(*map(set, d.values()))

关于python - 过滤字典中常见的子字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36768940/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com