Дайте ключ для каждого значения ключа словаря - PullRequest
0 голосов
/ 14 февраля 2019

Я запускаю этот код, чтобы объединить три списка в словарь, причем первый список является ключевым.

list_dict = {x: (y, z) for x, y, z in zip_longest(order_instance, final_mem, final_disk)}
pprint(list_dict)

, который возвращает это ...

{'instanceIndex:0': ('212590592', '192389120'),
 'instanceIndex:1': ('5971968', '13963264'),
 'instanceIndex:2': ('93331456', '216592384')}

Я хотел бы иметь возможность отформатировать этот словарь, чтобы показать ключи для значений y и z, упрощая ввод вSQL дБ.Как то так.

{'instanceIndex:0': ((Memory: '212590592'),
                      (Disk: '192389120')),
 'instanceIndex:1': ((Memory: '5971968'),
                      (Disk: '13963264')),
 'instanceIndex:2': ((Memory: '93331456'),
                      (Disk: '216592384'))}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Вы можете использовать collections.namedtuples для хранения ваших данных как именованный кортеж :

from itertools import zip_longest
from collections import namedtuple
from pprint import pprint

inst = ["i1","i2","i3"]
memo = ["1","2","3"]
disk = ["d1","d2","d3"] 

Data = namedtuple("Data", ["Memory","Disk"])

k = {x: Data(m,d) for x, m, d in zip_longest(inst,memo,disk)}

pprint(k) 

Вывод:

{'i1': Data(Memory='1', Disk='d1'),
 'i2': Data(Memory='2', Disk='d2'),
 'i3': Data(Memory='3', Disk='d3')}

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

print( k["i1"].Memory)   # 1 
print( k["i1"][1])       # d1
0 голосов
/ 14 февраля 2019

Вы можете напрямую модифицировать свое понимание dict, чтобы оно соответствовало любому формату, который вы выбрали для хранения своих значений.В вашем случае ваш формат значения ключа похож на dict ionary - так что используйте его.

list_dict = {x: {'Memory':y, 'Disk':z} for x, y, z in zip_longest(order_instance, final_mem, final_disk)}
#               ^^^^^^^^^^  ^^^^^^^^ ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...