首页 > 解决方案 > 如何创建一个包含集合中每个值的字典?

问题描述

我在尝试创建使用集合作为键值的字典时遇到问题,并且包含键的部分元素的值将被添加到键值中。

例如,如果我有以下一组:

{( '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')}}

顺序无关紧要,它必须包括每个元素。例如,由于 value('z', 'w', 's')包含('z')and ('z','w'),它也为这些键添加了。

标签: pythondictionaryset

解决方案


当然不是最有效的:

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}

推荐阅读