字典中单个键的多个值

时间:2014-07-31 10:00:35

标签: python html dictionary key

我目前正在编写一个脚本,从xml中提取数据并将其写入html文件,以便在网页上查看。

每条数据都包含2个"子数据":所有者和类型。

为了使html正常工作,我需要"所有者"字符串和"类型"要写在正确位置的字符串。如果它只是一个数据,那么我会使用字典,只使用数据名作为键,然后将值写入html,但是有2个数据。

我的问题是,字典是否可以将2个值(在我的情况下为所有者和类型)分配给单个键?

2 个答案:

答案 0 :(得分:2)

任何对象都可以是字典中的值,因此您可以使用任何集合来针对同一个键保存多个值。要将我的注释扩展到一些代码示例中,以便增加复杂性(在我看来,可读性):

<强>元组

最简单的选项是两元组字符串,您可以通过索引访问它们:

>>> d1 = {'key': ('owner', 'type')}
>>> d1['key'][0]
'owner'
>>> d1['key'][1]
'type'

<强>词典

接下来是一个子词典,它允许您按键名访问值:

>>> d2 = {'key': {'owner': 'owner', 'type': 'type'}}
>>> d2['key']['owner']
'owner'
>>> d2['key']['type']
'type'

命名元组

最后,collections模块提供namedtuple,这需要一些设置,但随后允许您按属性名称访问值:

>>> from collections import namedtuple
>>> MyTuple = namedtuple('MyTuple', ('owner', 'type'))
>>> d3 = {'key': MyTuple('owner', 'type')}
>>> d3['key'].owner
'owner'
>>> d3['key'].type
'type'

使用命名键/属性可以让您对值的后续访问更加清晰(d3['key'].ownerd2['key']['owner']不像d1['key'][0]那样含糊不清。

答案 1 :(得分:0)

只要密钥是可散列的,您就可以拥有任何格式的密钥。请注意,元组是可散列的,因此可以解决您的问题

创建一个case-owner的元组并输入并将其用作词典的键。

注意,通常所有可清除的对象也应该是不可变的,但反之亦然。所以