Python集合列表问题:如何维持输入顺序及快速提取数值元素
问题解答
Q1:如何让列表保持与输入一致的状态?
出现顺序混乱的核心原因是集合(set)是无序数据结构,它不会保留元素的插入顺序,打印时元素位置会随机调换。要严格保持输入顺序,把每个集合替换成**元组(tuple)或者列表(list)**即可——这两类结构是有序的,能完整保留元素的插入顺序。
修改后的输入示例:
# 使用元组 [("Bob","87"), ("Mike", "35"),("Bob", "52"), ("Jason","35"), ("Mike", "55"), ("Jessica", "99")] # 或者使用列表 [["Bob","87"], ["Mike", "35"],["Bob", "52"], ["Jason","35"], ["Mike", "55"], ["Jessica", "99"]]
这样打印出来的内容就会和输入顺序完全一致。
Q2:遍历该列表的每个元素时,如何快速提取每个集合中的数值元素?
如果仍在使用集合,因为元素顺序不确定,只能通过判断元素是否为数字字符串来提取:
data = [{'Bob', '87'}, {'35', 'Mike'}, {'Bob', '52'}, {'35', 'Jason'}, {'55', 'Mike'}, {'99', 'Jessica'}] for item in data: # 筛选出数字格式的元素 num = next(x for x in item if x.isdigit()) print(num)
如果已经换成了元组/列表(即Q1的解决方案),因为元素位置固定,直接按索引取值会更高效:
data = [("Bob","87"), ("Mike", "35"),("Bob", "52"), ("Jason","35"), ("Mike", "55"), ("Jessica", "99")] for name, num in data: print(num)
内容的提问来源于stack exchange,提问作者Charles Yan
相关产品推荐
相关产品推荐

