【问题标题】:'<' not supported between instances of str and intstr 和 int 的实例之间不支持“<”
【发布时间】:2021-08-10 18:55:37
【问题描述】:

我正在尝试找出一组人中的最低分数。

我的代码:

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)

我应该做些什么不同的事情?

【问题讨论】:

  • 您的 x 项目是两个实体的列表,stringintfor y in x 产生 str,然后是每个 if 语句的 int。因此,您的第一个测试是检查 "Radhe"99
  • min(your_lst, key=lambda x: x[1])?

标签: python string integer min nested-lists


【解决方案1】:
  1. list 是 python 中的内置数据类型,因此您应该将变量重命名为其他名称,例如 l

  2. 在您的第一个 for 循环中,您正在执行 for x in list,因此您将 x 分配给列表的第一个元素 ['Radhe', 99]。在您的第二个 for 循环中,您将遍历 x 中的每个项目,其中第一个是 'Radhe',因此您将 int 与字符串进行比较。

考虑到这一点,您可以将代码重写为:

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])

【讨论】:

    【解决方案2】:

    当你真的只关心x[1]时,你正在迭代x每个元素:

    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
    

    【讨论】:

    • 是的,我现在看到了,谢谢!!
    • 出现了一个新故障。尽管部署了修正,但我无法比较 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]
    【解决方案3】:

    试试这个

    given_list = [['Radhe',99],['Bajrangi',98],['Ram',95],['Shyam',94],['Bharat',89]]
    print(min(given_list, key=lambda x: x[1])[1])
    

    【讨论】:

    • 出现了一个新故障。尽管部署了修正,但我无法比较 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]
    • @dubey ..请将此添加到原始问题并在堆栈溢出中提出单独的问题...在评论部分阅读代码 sn-ps 有点困难
    猜你喜欢
    • 2020-05-19
    • 2019-11-18
    • 1970-01-01
    • 2020-03-12
    • 2019-09-10
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多