我有一个包含一些xml信息的元组列表,并且想创建一个字典来加快访问速度。需要为列表中的每个元组分配一个id作为我存储在第一项中的键,并将所有剩余信息作为值存储,但不确定是否可以在python上实现。
我实际上必须生成列表的代码:
for node in root.findall('n:graph/n:node', ns):
id = node.get('id')
nodes.append((id, *(data.text for data in node if \
(data.get('key') == keys[2] or data.get('key') == keys[3]))))
可以为我提供以下输出:
nodes = [('id1','x','y'),('id2','x','y')...]
我想要的是这样的
nodes = {'id1':('x','y'),'id2':('x','y')...]
这样我便可以使用如果节点中有id 来检查元素是否存在。谢谢。
答案 0 :(得分:3)
以nodes
作为字典而不是列表开始。
nodes = {}
for node in root.findall('n:graph/n:node', ns):
id = node.get('id')
nodes[id] = tuple([data.text for data in node if \
(data.get('key') == keys[2] or data.get('key') == keys[3])])
答案 1 :(得分:1)
您可以只使用dict comprehension:
{x[0]: x[1:] for x in nodes}
答案 2 :(得分:1)
nodes = {}
for node in root.findall('n:graph/n:node', ns):
id = node.get('id')
nodes[id] = (data.text for data in node if data.get('key') in [keys[2],keys[3]])
只要ID保证唯一,此方法就可以工作,否则它们将覆盖旧数据。