提问人:dubey 提问时间:5/21/2021 最后编辑:Glycerinedubey 更新时间:5/22/2021 访问量:668
str 和 int 实例之间不支持“<”
'<' not supported between instances of str and int
问:
我试图找出一群人中最低的分数。
我的代码:
list = [['Radhe',99],['Bajrangi',98],['Ram',95],['Shyam',94],['Bharat',89]]
min_score = list[0][1]
for x in list:
for y in x:
if (y < min_score):
min_score=y
print(min_score)
我应该做些什么不同?
答:
1赞
chepner
5/21/2021
#1
你正在迭代 的每个元素,而你实际上只关心:x
x[1]
for x in list:
if x[1] < min_score:
min_score = x[1]
您还可以解压缩每个子列表,以便为值提供更易于使用的名称:
for name, score in list:
if score < min_score:
min_score = score
评论
0赞
dubey
5/21/2021
是的,我现在明白了,谢谢!!
0赞
dubey
5/21/2021
有一个新的故障。尽管部署了修改,但我无法比较 float 和 str。代码如下: n = int(input()) list = [] for i in range(n+1): name = input() score = float(input()) list.append([name,score]) print(list) min_scores = list[0][1] for x in list: if (x[1]<min): min_scores = x[1] list.remove(min) print(list)
1赞
Tom McLean
5/21/2021
#2
list
是 Python 中的内置数据类型,因此您应该将变量重命名为其他名称,例如l
在第一个 for 循环中,您将 x 分配给 list 的第一个元素,即 。在第二个 for 循环中,您将遍历 x 中的每个项目,其中第一个是,因此您将 int 与字符串进行比较。
for x in list
['Radhe', 99]
'Radhe'
考虑到这一点,您可以将代码重写为:
l = [['Radhe',99],['Bajrangi',98],['Ram',95],['Shyam',94],['Bharat',89]]
min_score = l[0][1]
for x in l:
if (x[1] < min_score):
min_score=x[1]
print(min_score)
其输出:
89
或者,您可以使用列表推导在一行中完成所有操作:
min_score = min([x[1] for x in l])
0赞
Deepak
5/21/2021
#3
试试这个
given_list = [['Radhe',99],['Bajrangi',98],['Ram',95],['Shyam',94],['Bharat',89]]
print(min(given_list, key=lambda x: x[1])[1])
评论
0赞
dubey
5/22/2021
有一个新的故障。尽管部署了修改,但我无法比较 float 和 str。代码如下: n = int(input()) list = [] for i in range(n+1): name = input() score = float(input()) list.append([name,score]) print(list) min_scores = list[0][1] for x in list: if (x[1]<min): min_scores = x[1] list.remove(min) print(list)
0赞
Deepak
5/22/2021
@dubey ..请将此添加到原始问题中,并在堆栈溢出中提出一个单独的问题...阅读注释部分中的代码片段并不难
评论
x
string
int
for y in x
"Radhe"
99
min(your_lst, key=lambda x: x[1])
?