Python将列表的字典转换为集合的字典?

时间:2018-10-07 20:59:35

标签: python dictionary set

我有:

myDict = {'a': [1,2,3], 'b':[4,5,6], 'c':[7,8,9]}

我想要:

myDict = {'a': set([1,2,3]), 'b':set([4,5,6]), 'c':set([7,8,9])}

是否可以使用单行代码执行此操作,而不是遍历它并转换值的类型?

4 个答案:

答案 0 :(得分:3)

您仍然必须循环:

{key: set(value) for key, value in yourData.items()}

如果您使用的是Python 3.6+,也可以执行以下操作:

dict(zip(myDict.keys(), map(set, myDict.values())))

答案 1 :(得分:0)

无论如何都不能不进行循环,但是可以使用以下代码在一行中完成循环:

myDict = {k:set(v) for k, v in myDict.items()}

这基本上是遍历字典中的每个项目,并将列表转换为集合,然后将key(str):value(set)对组合为新字典,并将其分配回myDict变量。

答案 2 :(得分:0)

您可以对其进行理解:

基本上,循环遍历键-值对,并为对应的键从每个值中创建一个集。

>>> myDict = {'a': [1,2,3], 'b':[4,5,6], 'c':[7,8,9]}
>>> myDict = {k: set(v) for k, v in myDict.items()}
>>> myDict
{'a': {1, 2, 3}, 'b': {4, 5, 6}, 'c': {8, 9, 7}}

答案 3 :(得分:0)

这可以通过将值映射为类型map

来实现,set
myDict = dict(map(lambda x: (x[0], set(x[1])), myDict.items()))

或同时使用任一版本的字典理解

myDict = {k: set(v) for k, v in myDict.items()}
myDict = {k: set(myDict[k]) for k in myDict}