Добавить кортеж как значение в словаре - PullRequest
0 голосов
/ 03 октября 2018

У меня есть список кортежей с некоторой XML-информацией, и я хочу создать словарь, чтобы ускорить доступ.Необходимо присвоить идентификатор в качестве ключа, который я храню в первом элементе для каждого кортежа списка, а также в качестве значения всей оставшейся информации, но не уверен, возможно ли это вообще на python.

Код Iна самом деле нужно сгенерировать список:

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]))))

, который дает мне следующий вывод:

node = [('id1', 'x', 'y'), ('id2', 'x', 'y') ...]

Я хочу что-то вроде:

node = {'id1': ('x ',' y '),' id2 ': (' x ',' y ') ...]

Так что я могу использовать , если id в узлах проверить, существует ли элемент или нет.Спасибо.

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Начните с 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])])
0 голосов
/ 03 октября 2018
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]])

Это будет работать до тех пор, пока идентификаторы гарантированно будут уникальными, в противном случае они будут перезаписывать более старые данные.

0 голосов
/ 03 октября 2018

Вы можете просто использовать диктовку :

{x[0]: x[1:] for x in nodes}
...