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