如何创建一个包含集合中每个值的字典?

时间:2019-01-22 10:36:55

标签: python dictionary set

我在尝试创建一个将集合用作键值的字典时遇到麻烦,并且将包含键的部分元素的值添加到键值中。

例如,如果我有一个下面的组合:

{( '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'),因此它们也添加到这些键中。

1 个答案:

答案 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}