我有一个元组,看起来像这样:
List=[
('actinium-225', '10', '314'),
('actinium-226', '1.2238', '110'),
('americium-240', '2.117', '395'),
('berkelium-245', '4.94', '182'),
]这个列表还在继续,所以我一直在寻找如何解包这些元素来创建一个字典,这样我就可以计算出这些元素的放射性衰减率,第一个值是元素,第二个是半衰期,第三个是剩余存量(以克为单位)。
我需要这样的东西
Dict={
1: ('actinium 225', 10, 314),
2: ('actinium-226', 1.2238, 110),
3: ('americium-240', 2.117, 395),
4: ('berkelium-245', 4.94, 182),
}发布于 2021-06-06 17:34:51
如何将包含三个元素的元组转换为包含、一个键和两个值的字典?
您的问题标题与您的预期输出不匹配,因此我将使用预期输出,而不是问题标题。
您可以将map和enumerate与字典理解一起使用:
{idx: tuple([item[0]] + list(map(float, item[1:]))) for idx, item in enumerate(List, 1)}输出
{1: ('actinium-225', 10.0, 314.0),
2: ('actinium-226', 1.2238, 110.0),
3: ('americium-240', 2.117, 395.0),
4: ('berkelium-245', 4.94, 182.0)}如果不需要类型转换,您可以只执行dict(enumerate(List,1))
发布于 2021-06-06 17:40:50
dic = {}
for index, ele in enumerate(List):
key = index+1
val_2 = float(ele[1])
val_3 = int(ele[2])
dic.update({key: (ele[0], val_2, val_3)})
print(dic)
{1: ('actinium-225', 10.0, 314), 2: ('actinium-226', 1.2238, 110), 3: ('americium-240', 2.117, 395), 4: ('berkelium-245', 4.94, 182)}发布于 2021-06-06 18:10:50
你的问题的答案是微不足道的,你可以用理解、生成的表达式、映射/过滤器等工具来转换你想要的迭代器。
这个就像是一种代码高尔夫:
Dict = {i: (el, float(hl), int(st)) for i, (el, hl, st) in enumerate(List, 1)}然而,,
老实说,我不明白这一点。如果你认为你需要一个字典,它的关键字是有序的int dict**,,你不需要一个字典,你需要一个** list!
并且您已经在list中拥有它们。您可以像List[2]一样按索引检索值,这与从dict检索值非常相似(甚至更好),比如Dict[2]。
https://stackoverflow.com/questions/67857635
复制相似问题