我目前正在编写一个脚本,从xml中提取数据并将其写入html文件,以便在网页上查看。
每条数据都包含2个"子数据":所有者和类型。
为了使html正常工作,我需要"所有者"字符串和"类型"要写在正确位置的字符串。如果它只是一个数据,那么我会使用字典,只使用数据名作为键,然后将值写入html,但是有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'].owner
和d2['key']['owner']
不像d1['key'][0]
那样含糊不清。
答案 1 :(得分:0)
只要密钥是可散列的,您就可以拥有任何格式的密钥。请注意,元组是可散列的,因此可以解决您的问题
创建一个case-owner的元组并输入并将其用作词典的键。
注意,通常所有可清除的对象也应该是不可变的,但反之亦然。所以