Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多个值作为集合添加到现有词典_Python_List_Dictionary_Set - Fatal编程技术网

Python 将多个值作为集合添加到现有词典

Python 将多个值作为集合添加到现有词典,python,list,dictionary,set,Python,List,Dictionary,Set,我有一个字典,里面已经有数据,也就是说,键有值,其中一些键有多个值 例如: i = {"a": "111", "b": "222", "c": ["333", "444"]} 如何更改多个值的类型?我希望它们是集合,而不是列表,例如: i = {"a": {"111"}, "b": {"222"}, "c": {"333", "444"}} 一个类似的帖子是: 这里解释了如何向字典中添加多个元素,但它们似乎总是列表 如何更改多个值的类型? 或者如何将它们作为集合而不是列表添加到字典中?而不

我有一个字典,里面已经有数据,也就是说,键有值,其中一些键有多个值

例如:

i = {"a": "111", "b": "222", "c": ["333", "444"]}
如何更改多个值的类型?我希望它们是集合,而不是列表,例如:

i = {"a": {"111"}, "b": {"222"}, "c": {"333", "444"}}
一个类似的帖子是:

这里解释了如何向字典中添加多个元素,但它们似乎总是列表

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

而不是

my_dict['key'] = ['333', '444']
使用
集合
文字:

my_dict['key'] = {'333', '444'}
这看起来像是一个
dict
文本,但是缺少key:value-like的东西使得它成为
集合

而不是执行

my_dict['key'] = ['333', '444']
使用
集合
文字:

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

这看起来像是一个
dict
文本,但是缺少key:value-like东西使得它成为一个
set
使用dict理解使得转换现有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。

使用dict理解使转换现有dict非常容易:

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

这会将
列表
s中的所有值转换为
s。

在一行代码中:

>>> 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'}}

在一行代码中:

>>> 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'}}

建议:不管多个值是否被存储为列表或集合,您还应该考虑将单个值设置为相同类型,因为这将使得以后处理任意键的值变得更容易——换句话说,使所有值都相同的容器类型,即使包含少于两个项的值也相同。唯一的例外可能是已知的密钥,它们永远不会有多于一个与它们相关联的单个项。建议:不管多个值是否存储为列表或集合,您还应该考虑使单个值相同类型,因为这将使得以后处理任意键的值变得更容易——换句话说,使所有值都具有相同的容器类型,即使包含少于两个项的值也是如此。唯一的例外可能是已知的键,它们的关联项不能超过一个。