词典字典:共享至少两个公共键的打印词典
||
d = {\'g1\':{\'p1\':1,\'p2\':5,\'p3\':11,\'p4\':1},
\'g2\':{\'p1\':7,\'p3\':1,\'p4\':2,\'p5\':8,\'p9\':11},
\'g3\':{\'p7\':7,\'p8\':7},
\'g4\':{\'p8\':9,\'p9\':1,\'p10\':7,\'p11\':8,\'p12\':3},
\'g5\':{\'p1\':4,\'p13\':1},
\'g6\':{\'p1\':4,\'p3\':1,\'p6\':2,\'p13\':1}
}
对于给定的词典\'d \',我想返回共享至少两个(\'n \')键(存在于给定群集的所有子词典中)的子词典的群集。在这里,我们不在乎这些子词典的值。换句话说,给定群集中所有子词典的键的交集长度应至少为两个(或'n')。
没有找到相关结果
已邀请:
4 个回复
脾萌
碧肮械淌设
际恃啸称桅
可能会工作。 编辑:不,不是很有效。我需要考虑一下。
了驳
通过意识到视图d.keys()的行为类似于集合(在Python 3中;在Python 2中,它可能是一个列表),我们可以看到任何词典共有的键数:
&是集合的交集运算符-它为我们提供了这些集合共有的所有项目的集合。因此,我们可以通过检查此集合的长度来检查其中是否有至少两个,从而得出:
解决未知的群集大小会稍微困难一些-如果我们不对此进行硬编码,则无法直接使用&运算符。幸运的是,set类为我们提供了一种以set.intersection形式获取n个集合的交集的方法。它不会接受dict_keys实例,但是您可以通过调用set来轻松解决该问题:
您应该能够相当轻松地将其概括为大小为2到n的群集。