传递字符串、整数和元组信息作为 python 字典的键
Passing String, integer and tuple information as key for python dictionary
我正在尝试创建一个 python 字典,我想使用一个包含字符串、数字和 list/tuple 条目的键。理想情况下,钥匙应该看起来像
("stringA", "stringB", "stringC", integer1, (integer2, integer3, integer4))
我尝试基于此documentation创建一个namedtuple,如下
from collections import namedtuple
dictKey = namedtuple('dictKey', 'stringA stringB stringC integer1
(integer2 integer3 integer4)')
但它抛出一个 ValueError 提示它只能包含字母数字字符和下划线。所以
如何创建包含元组的字典键?
如何有效地使用字典键(尤其是元组呢
包含)从字典中检索信息?
这里的问题是您的 namedtuple
定义,而不是字典键结构本身,它可以正常工作,例如:
>>> d = {}
>>> d[('1', '2', 3, (4, 5))] = 'foo'
>>> d
{('1', '2', 3, (4, 5)): 'foo'}
当 namedtuple
读取 field_names
参数时,它认为您正在尝试创建一个名为 (integer2
的字段,但没有意识到您的意思是嵌套 tuple
。
要在 namedtuple
中定义该结构,您必须拥有一个本身就是 tuple
:
的属性
>>> from collections import namedtuple
>>> dictKey = namedtuple("dictKey", "stringA stringB stringC integer1 tuple1")
>>> key = dictKey("foo", "bar", "baz", 1, (2, 3, 4))
>>> d[key] = 'bar'
>>> d
{dictKey(stringA='foo', stringB='bar', stringC='baz', integer1=1, tuple1=(2, 3, 4)): 'bar',
('1', '2', 3, (4, 5)): 'foo'}
您可以像检索任何其他键一样检索针对键存储的值,或者使用原始 namedtuple
:
>>> d[key]
'bar'
或新的:
>>> d[dictKey("foo", "bar", "baz", 1, (2, 3, 4))]
'bar'
我正在尝试创建一个 python 字典,我想使用一个包含字符串、数字和 list/tuple 条目的键。理想情况下,钥匙应该看起来像
("stringA", "stringB", "stringC", integer1, (integer2, integer3, integer4))
我尝试基于此documentation创建一个namedtuple,如下
from collections import namedtuple
dictKey = namedtuple('dictKey', 'stringA stringB stringC integer1
(integer2 integer3 integer4)')
但它抛出一个 ValueError 提示它只能包含字母数字字符和下划线。所以
如何创建包含元组的字典键?
如何有效地使用字典键(尤其是元组呢 包含)从字典中检索信息?
这里的问题是您的 namedtuple
定义,而不是字典键结构本身,它可以正常工作,例如:
>>> d = {}
>>> d[('1', '2', 3, (4, 5))] = 'foo'
>>> d
{('1', '2', 3, (4, 5)): 'foo'}
当 namedtuple
读取 field_names
参数时,它认为您正在尝试创建一个名为 (integer2
的字段,但没有意识到您的意思是嵌套 tuple
。
要在 namedtuple
中定义该结构,您必须拥有一个本身就是 tuple
:
>>> from collections import namedtuple
>>> dictKey = namedtuple("dictKey", "stringA stringB stringC integer1 tuple1")
>>> key = dictKey("foo", "bar", "baz", 1, (2, 3, 4))
>>> d[key] = 'bar'
>>> d
{dictKey(stringA='foo', stringB='bar', stringC='baz', integer1=1, tuple1=(2, 3, 4)): 'bar',
('1', '2', 3, (4, 5)): 'foo'}
您可以像检索任何其他键一样检索针对键存储的值,或者使用原始 namedtuple
:
>>> d[key]
'bar'
或新的:
>>> d[dictKey("foo", "bar", "baz", 1, (2, 3, 4))]
'bar'