将元组添加为字典中的值

时间:2018-10-02 22:06:25

标签: python list dictionary tuples key

我有一个包含一些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 来检查元素是否存在。谢谢。

3 个答案:

答案 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保证唯一,此方法就可以工作,否则它们将覆盖旧数据。