python题望解决

假设有一列表,例如lst = [(100, 256), (200, 128), (300, 85), (200, 208), (100, 114)],每个元素都是一个元组,一个元组包括两个元素,

实现如下操作

1)输入列表lst

2)按照每个元组的第二个元素排序,并输出排序后的列表,每个元素占用一行

3)将所有第一个元素值为100的元组存入新列表lst_100,并输出该列表

【提示】

输入列表格式为[, , , ],元素采用英文逗号隔开

可直接输出一个元组,假设x为元组,print(x)合法

【样例输入】

 [(100, 256), (200, 128), (300, 85), (200, 208), (100, 114)]

【样例输出】

(300, 85)

(100, 114)

(200, 128)

(200, 208)

(100, 256)

(100, 256)

(100, 114)

# 给定列表lst
lst = [(100, 256), (200, 128), (300, 85), (200, 208), (100, 114)]

# 定义list1用于存储元素在lst列表中的索引,list2用于存储lst列表中每个元组第二个元素的值
# lst_100为题设所要求的第一个元素为100的元组

list1=[]
list2=[]
lst_100=[]

# 遍历lst
for i in range(len(lst)):
    list1.append(i)
    list2.append(lst[i][1])
    if lst[i][0]==100:
        lst_100.append(lst[i])

# 利用zip函数将list2与list1储存为字典形式,将list2作为键,list1作为list2的值
dic = dict(zip(list2,list1))

# 利用sorted函数对字典的键进行排序,之后遍历排序的结果,下面的代码中dic[i]为dic字典中的
# 值,即为lst元组中第二元素排序后所对应的索引值,lst[i]即为对应索引的元组
for i in sorted (dic) : 
    print (lst[dic[i]]) 
for i in lst_100:
    print(i)

# 打印输出如下
# (300, 85)
# (100, 114)
# (200, 128)
# (200, 208)
# (100, 256)
# (100, 256)
# (100, 114)

以上代码仅供题主参考,不保证程序的鲁棒性。