如何筛选父字典中其他子字典键中存在的所有公共子字典键
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]
有没有更简单的解决办法?你知道吗
一旦提取了所有键,就可以执行一个^{} 操作。那就一行了:
分解一下,评估的第一部分是:
这是一个发电机,它产生:
在Python 3中,该生成器等效于:
但是在python2中,^{} 效率较低,因为它构造了一个我们不需要的} 而不是^{} 一样)。你知道吗
list
(就像^{在任何情况下,该生成器的结果都会传递给
set.intersection
(使用*
参数unpacker)以在单个调用中完成繁重的工作。你知道吗您可以使用^{} 将词典^{} ,然后^{} :
注意:在python3中,
reduce
被移到了functools
。你知道吗更新:如@John的answer所示,
set.intersection
可以处理任意数量的集合,因此reduce
甚至不是必需的。只是set.intersection(*map(set, d.values()))
作为
pandas
的替代方法,键不需要排序:相关问题 更多 >
编程相关推荐