我有一个元组,看起来像这样:
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)}
如何将包含三个元素的元组转换为字典包含一个键和两个值?
你的问题标题与你的预期输出不匹配,所以我只使用预期输出,而不是问题标题。
你可以使用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))
问题的答案很简单,您可以使用理解、生成表达式、映射/过滤器等工具,随心所欲地转换可迭代内容。
这是一种代码高尔夫:
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
带有enumerate
和data 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)}
'''