首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将包含三个元素的元组转换为包含一个键和两个值的字典?

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

Stack Overflow用户
提问于 2021-06-06 17:31:12
回答 5查看 65关注 0票数 0

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

代码语言:javascript
复制
List=[
    ('actinium-225', '10', '314'), 
    ('actinium-226', '1.2238', '110'), 
    ('americium-240', '2.117', '395'), 
    ('berkelium-245', '4.94', '182'),
]

这个列表还在继续,所以我一直在寻找如何解包这些元素来创建一个字典,这样我就可以计算出这些元素的放射性衰减率,第一个值是元素,第二个是半衰期,第三个是剩余存量(以克为单位)。

我需要这样的东西

代码语言:javascript
复制
Dict={
    1: ('actinium 225', 10, 314), 
    2: ('actinium-226', 1.2238, 110), 
    3: ('americium-240', 2.117, 395),
    4: ('berkelium-245', 4.94, 182),
}
EN

回答 5

Stack Overflow用户

发布于 2021-06-06 17:34:51

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

您的问题标题与您的预期输出不匹配,因此我将使用预期输出,而不是问题标题。

您可以将mapenumerate与字典理解一起使用:

代码语言:javascript
复制
{idx: tuple([item[0]] + list(map(float, item[1:]))) for idx, item in enumerate(List, 1)}

输出

代码语言:javascript
复制
{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))

票数 1
EN

Stack Overflow用户

发布于 2021-06-06 17:40:50

代码语言:javascript
复制
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)}
票数 1
EN

Stack Overflow用户

发布于 2021-06-06 18:10:50

你的问题的答案是微不足道的,你可以用理解、生成的表达式、映射/过滤器等工具来转换你想要的迭代器。

这个就像是一种代码高尔夫:

代码语言:javascript
复制
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]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67857635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档