是否将字典(以元组作为值)转换为列表?

2024-04-19 20:51:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一本字典:

sort = {
    str(4213) : ("STEM Center",0),
    str(4201) : ("Foundations Lab",1),
    str(4204) : ("CS Lab",2),
    str(4218) : ("Workshop Room",3),
    str(4205) : ("Tiled Room",4),
    "Out" : ("Outside",5)
}

如何将其转换为一个列表,其中列表中的每一项都是一个元组?(使用循环)

例如:

[('4213', 'STEM Center', 0),...]

Tags: 列表字典laboutcssortroom元组
3条回答

您可以迭代字典中的items,并将它们作为元组连接起来:

sort = { str(4213) : ("STEM Center",0), str(4201) : ("Foundations Lab",1), str(4204) : ("CS Lab",2), str(4218) : ("Workshop Room",3), str(4205) : ("Tiled Room",4), "Out" : ("Outside",5) }

[(k,) + v for k, v in sort.items()]

输出:

[('4213', 'STEM Center', 0),
 ('4204', 'CS Lab', 2),
 ('4205', 'Tiled Room', 4),
 ('Out', 'Outside', 5),
 ('4201', 'Foundations Lab', 1),
 ('4218', 'Workshop Room', 3)]

使用dictionary comprehension将dict解压到其键/值(k/v)中,由于示例中的值是具有index-0和index-1内容的元组,并且所需的输出格式是将其打包在一起,因此可以通过调用元组值(v[0],v[1])的每个索引来实现这一点

[(k,v[0], v[1]) for k, v in sort.items()]

最简单的方法是使用列表理解:

sort = {
    str(4213) : ("STEM Center",0),
    str(4201) : ("Foundations Lab",1),
    str(4204) : ("CS Lab",2),
    str(4218) : ("Workshop Room",3),
    str(4205) : ("Tiled Room",4),
    "Out" : ("Outside",5)
}

print([(k, name, count) for k, (name, count) in sort.items()])

印刷品:

[('4213', 'STEM Center', 0), ('4201', 'Foundations Lab', 1), ('4204', 'CS Lab', 2), ('4218', 'Workshop Room', 3), ('4205', 'Tiled Room', 4), ('Out', 'Outside', 5)]

相关问题 更多 >