将多个值作为SETS添加到现有字典中

时间:2016-04-29 17:43:37

标签: python list dictionary set

我有一个字典,其中我已经有数据,即键有值,其中一些有多个值。

例如:

i = {"a": "111", "b": "222", "c": ["333", "444"]}

如何更改多个值的类型?我希望它们是集合,而不是列表,例如:

i = {"a": {"111"}, "b": {"222"}, "c": {"333", "444"}}

这是一个类似的帖子: How to add multiple values to a dictionary key in python? [closed]

在那里解释了如何将多个元素添加到字典中,但它们似乎总是列表。

如何更改多个值的类型? 或者如何将它们作为集合添加到字典中,而不是列表?

3 个答案:

答案 0 :(得分:3)

使用dict-comprehension可以很容易地转换现有的dict:

i = {"a": "111", "b": "222", 'c': ["333", "444"]}
{k: set(v) if isinstance(v, list) else v for k, v in i.items()}

这会将list s的所有值转换为set s。

答案 1 :(得分:1)

在一行代码中:

>>> i = {"a": "111", "b": "222", "c": ["333", "444"]}
>>> {k: set(v) for k, v in i.items()}
{'b': {'2'}, 'a': {'1'}, 'c': {'444', '333'}}

或者还有一些步骤:

>>> i = {"a": "111", "b": "222", "c": ["333", "444"]}
>>> for k, v in i.items():
...     i[k] = set(v)
>>> i
{'b': {'2'}, 'a': {'1'}, 'c': {'444', '333'}}

答案 2 :(得分:0)

而不是做

my_dict['key'] = ['333', '444']

使用set字面值:

my_dict['key'] = {'333', '444'}

这看起来像一个dict字面值,但缺少关键字:像事情这样的值使它成为set