为每个字典键赋值

2024-04-25 12:49:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行这个代码将三个列表合并到一个字典中,第一个列表是键。你知道吗

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值的键,这样可以更容易地输入到sqldb中。像这样的。你知道吗

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

Tags: instance代码in列表forlongest字典order
2条回答

你可以直接修改你的dict理解来匹配你选择的任何格式来存储你的值。在您的例子中,键值格式类似于dict索引,所以请使用它。你知道吗

list_dict = {x: {'Memory':y, 'Disk':z} for x, y, z in zip_longest(order_instance, final_mem, final_disk)}
#               ^^^^^^^^^^  ^^^^^^^^ ^

您可以使用^{}将数据存储为命名元组

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

相关问题 更多 >