猿问

为每个字典键值提供键

我正在运行此代码以将三个列表组合成一个字典,其中第一个列表是键。


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'))}


撒科打诨
浏览 140回答 2
2回答

郎朗坤

您可以直接修改您的 dict-comprehension 以匹配您选择存储值的任何格式。在您的情况下,您的键值格式类似于dict离子 - 所以使用它。list_dict = {x: {'Memory':y, 'Disk':z} for x, y, z in zip_longest(order_instance, final_mem, final_disk)}#               ^^^^^^^^^^  ^^^^^^^^ ^

交互式爱情

您可以使用命名元组collections.namedtuples存储您的数据:from itertools import zip_longestfrom collections import namedtuplefrom pprint import pprintinst = ["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
随时随地看视频慕课网APP

相关分类

Python
我要回答