我做了字典:
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),...]
答案 0 :(得分:4)
最简单的方法是使用列表理解:
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)]
答案 1 :(得分:2)
使用字典理解将字典解压缩为其键/值(k / v),由于您的示例中的值是具有索引-0和索引-1内容的元组,因此您希望使用的输出格式将其打包一起,您可以通过调用元组值(v [0],v [1])的每个索引来实现这一点
[(k,v[0], v[1]) for k, v in sort.items()]
答案 2 :(得分:2)
您可以遍历字典中的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)]
答案 3 :(得分:1)
由于该问题特别提到应该将其循环处理(也许需要做进一步的处理才能完成),所以这是什么样子(修改@Andrej Kesely的强大方法)
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) }
result = []
for key, (name, count) in sort_.items():
result.append((key, name, count))
我将sort
重命名为sort_
。即使它不在此命名空间中(sort
是列表中的方法),我也不喜欢使用关键字。
[('4213', 'STEM Center', 0),
('4201', 'Foundations Lab', 1),
('4204', 'CS Lab', 2),
('4218', 'Workshop Room', 3),
('4205', 'Tiled Room', 4),
('Out', 'Outside', 5)]
答案 4 :(得分:-1)
new_list = [(k,sort[k][0],sort[k][1]) for k in sort]
print(new_list)
=> [('4213','STEM中心',0),('4201','基金会实验室',1)]
当然您也可以这样做
l=[]
for k in sort:
l.append((k,sort[k][0],sort[k][1]))
[('4213','STEM中心',0),('4201','基金会实验室',1)]
答案 5 :(得分:-1)
sorted_list = list(sort.items())
这会给你 [('Out',('Outside',5)),('4201',('Foundation Lab',1)),('4204',('CS Lab',2)),('4218', ('Workshop Room',3)),('4213',('STEM Center',0)),('4205',('Tiled Room',4))]