我在尝试创建一个将集合用作键值的字典时遇到麻烦,并且将包含键的部分元素的值添加到键值中。
例如,如果我有一个下面的组合:
{( 'a', 'b', 'c' ), ( 'a', 'd', 'b' ), ( 'z',), ( 'z', 'j' ), ( 'z', 'w' ), ( 'z', 'w', 's' ), ( 'z', 'm' )}
如何使字典看起来像这样:
{( 'a', 'b' ,'c' ): {( 'a', 'b', 'c' )}, ( 'a' ,'d' ,'b' ): {( 'a' ,'d' ,'b' )}, ( 'z' ): {('z'),('z','j'),('z','w'),('z','w','s'),('z','m')}, ( 'z', 'j' ): {('z', 'j')}, ('z', 'w'): {('z','w'), ('z', 'w', 's')}}
顺序无关紧要,它必须包含所有元素。例如,由于值('z', 'w', 's')
包含('z')
和('z','w')
,因此它们也添加到这些键中。
答案 0 :(得分:0)
肯定不是最有效的:
myset = {( 'a', 'b', 'c' ), ( 'a', 'd', 'b' ), ( 'z',), ( 'z', 'j' ), ( 'z', 'w' ), ( 'z', 'w', 's' ), ( 'z', 'm' )}
dict_of_set = {k: set(x for x in myset if set(k).issubset(x)) for k in myset}