传递字符串、整数和元组信息作为python字典的键

2024-09-25 06:33:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个python字典,我希望使用一个包含字符串、数字和列表/元组项的键。钥匙最好看起来像

("stringA", "stringB", "stringC", integer1, (integer2, integer3, integer4))

我尝试基于这个documentation创建一个namedtuple,如下所示

^{pr2}$

但是它给了我一个ValueError,说它只能包含字母数字字符和下划线。所以

  1. 如何创建包含元组的字典键?

  2. 如何有效地使用字典键(尤其是元组键) 包含)从字典中检索信息?


Tags: 字符串列表字典documentation数字钥匙元组stringa
1条回答
网友
1楼 · 发布于 2024-09-25 06:33:06

这里的问题在于您的namedtuple定义,而不是字典键结构本身,它可以正常工作,例如:

>>> d = {}
>>> d[('1', '2', 3, (4, 5))] = 'foo'
>>> d
{('1', '2', 3, (4, 5)): 'foo'}

namedtuple读取field_names参数时,它认为您正在尝试创建一个名为(integer2的字段,并且没有意识到您的意思是它是一个嵌套的tuple。在

要在namedtuple中定义该结构,您必须有一个本身是tuple的属性:

^{pr2}$

您可以使用原始的namedtuple检索针对该键存储的值,就像检索任何其他项一样:

>>> d[key]
'bar'

或者换一个新的:

>>> d[dictKey("foo", "bar", "baz", 1, (2, 3, 4))]
'bar'

相关问题 更多 >