我有:
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])}
是否有我可以用来执行此操作的单行代码,而不是循环遍历它并转换值的类型?
无论如何,您都必须循环:
{key: set(value) for key, value in yourData.items()}
如果你使用的是Python 3.6+,你也可以这样做:
dict(zip(myDict.keys(), map(set, myDict.values())))
这可以通过将值映射到类型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}
你可以对它使用理解:
基本上,循环遍历键值对,并为相应的键创建每个值的集合。
>>> 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}}
无论如何,如果不循环,您就无法做到这一点,但是您可以使用以下代码在一行中完成循环:
myDict = {k:set(v) for k, v in myDict.items()}
这基本上是遍历字典中的每个项目并将列表转换为集合,并将键(str(:value(set(对组合到一个新字典并将其赋回myDict变量。