索引嵌套在字典中的命名元组

Indexing a namedtuple nested in a dictionary

我想在字典中存储命名元组。那部分很容易。不过,我不知道如何引用 namedtuple 中的单个位。

我知道我可以只使用字典让生活更轻松,但如果你有你知道你不想改变的价值观,那么在这里使用 namedtuple 会很好(更是如此只是出于兴趣——我意识到字符串也是不可变的。

from collections import namedtuple

Rec = namedtuple('name', ['First', 'Middle', 'Last'])
name = Rec('Charles', 'Edward', 'Bronson')

info = dict(identity=name)

print(name.First)
print(info['identity'])
print(type(info['identity']))

结果:

Charles
name(First='Charles', Middle='Edward', Last='Bronson')
<class '__main__.name'>

我希望能够通过调用 info['identity'][name.First] 或类似的方式访问 name.First,但我似乎无法在嵌套的 namedtuple 中建立索引。

您可能知道,命名元组支持多种类型的索引

  • tuple[0] returns 第一个字段(顺序根据您在 namedtuple 定义期间提供的字段列表定义)
  • tuple.field_name returns 字段名为 field_name

info['identity'] 是您要索引的命名元组,所以我们开始吧:)

print(info['identity'] == name)
# True
print(info['identity'].First)
# Charles
# or
print(info['identity'][0])
# Charles

# OR, splitting the operations
name_field = info['identity']
print(name_field.First)