如何将包含三个元素的元组转换为包含一个键和两个值的字典



我有一个元组,看起来像这样:

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

如何将包含三个元素的元组转换为字典包含一个键和两个值

你的问题标题与你的预期输出不匹配,所以我只使用预期输出,而不是问题标题。

你可以使用mapenumerate与字典理解:

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

问题的答案很简单,您可以使用理解、生成表达式、映射/过滤器等工具,随心所欲地转换可迭代内容。

这是一种代码高尔夫:

Dict = {i: (el, float(hl), int(st)) for i, (el, hl, st) in enumerate(List, 1)}

HOWEVER

老实说,我看不出有什么意义。如果你认为你需要一本字典,它的关键字只是有序的int数字,你不需要dict,你需要list

你已经把它们放在list中了。您可以像List[2]那样通过索引检索值,这与从dict(如Dict[2](检索值非常相似(甚至更好(。

您可以循环遍历元组并创建一个字典,如以下

elements = [('actinium-225', '10', '314'), ('actinium-226', '1.2238', '110'), ('americium-240', '2.117', '395'), ('berkelium-245', '4.94', '182')]
elemDict = {}
for ind, tup in enumerate(elements):
elemDict[ind+1] = tup

带有enumeratedata destruction:的简单for-loop

l = [
('actinium-225', '10', '314'), 
('actinium-226', '1.2238', '110'), 
('americium-240', '2.117', '395'), 
('berkelium-245', '4.94', '182'),
]
d = {}
for i, (a, b, c) in enumerate(l, 1):
d[i] = (a, float(b), int(c))
print(d)
'''
{1: ('actinium-225', 10.0, 314), 
2: ('actinium-226', 1.2238, 110),
3: ('americium-240', 2.117, 395),
4: ('berkelium-245', 4.94, 182)}
'''

最新更新