如何使用 Python 集并将字符串作为字典值添加到其中

Posted

技术标签:

【中文标题】如何使用 Python 集并将字符串作为字典值添加到其中【英文标题】:How to use Python sets and add strings to it in as a dictionary value 【发布时间】:2014-08-30 12:12:21 【问题描述】:

我正在尝试创建一个将值作为 Set 对象的字典。我想要一组与唯一引用关联的唯一名称)。我的目标是尝试创造类似的东西:

目标:

Dictionary[key_1] = set('name')    
Dictionary[key_2] = set('name_2', 'name_3')

添加到 SET:

Dictionary[key_2].add('name_3')

但是,使用 set 对象将 name 字符串分解为预期的字符,如 here 所示。我试图使字符串成为元组,即set(('name'))Dictionary[key].add(('name2')),但这不能按要求工作,因为字符串被拆分为字符。

是通过列表将字符串添加到集合以阻止它被分解成字符的唯一方法

'n', 'a', 'm', 'e'

任何其他想法将不胜感激。

【问题讨论】:

在我的电脑(python 2.7.6)上,set.add 不会破坏字符串(而 set 构造函数会破坏),那么为什么不创建一个空集并添加字符串呢? Dictionary[Key_1] = Set(['name_1']) --> 输入原来是一个列表,然后 Dictionary[Key_1].add('name_2') --> 不需要输入作为列表似乎可以解决这个问题。然后我从一开始就有一个 Set 对象。感谢所有建议/帮助。 【参考方案1】:

您可以像@larsmans 解释的那样编写单个元素元组,但很容易忘记结尾的逗号。如果您只使用列表作为 set 构造函数和方法的参数,则可能不太容易出错:

Dictionary[key_1] = set(['name'])    
Dictionary[key_2] = set(['name_2', 'name_3'])

Dictionary[key_2].add(['name_3'])

都应该按照您的预期工作。

【讨论】:

我发现当我使用 Dictionary.add['name_3'] 之后,我得到一个异常(unhashable type: 'list')。我找到的唯一解决方案是使用 .add('name-3') --> 现在不是单个列表(但仅适用于 Set 构造函数)。 请看我写的:.add(['name_3']).add['name_3']不一样【参考方案2】:

('name') 不是元组。它只是表达式'name',带括号。一个元素元组写成('name',);单元素列表['name'] 更漂亮,也可以工作。

在 Python 2.7、3.x 中也可以写 'name' 来构造集合。

【讨论】:

以上是关于如何使用 Python 集并将字符串作为字典值添加到其中的主要内容,如果未能解决你的问题,请参考以下文章

如何从firebase数据库中检索数据作为字符串而不是字典并将其添加到数组中?

将字典列表写入 CSV Python

使用 for loop .splitlines 循环将键和值添加到字典

如何迭代更新字典的值并将每个表示添加到列表中[重复]

Python 2.7:将零添加到多值字典列表之间的大小差异并将其相加

使用冻结集作为字典键是不是安全?