python - 如何将字符串的长度与同一列表中的整数进行比较?

标签 python python-3.x

我的任务是从用户那里获取一个列表并打印出该列表中的第二大项目。

用户应该能够输入字符串或整数。

我在比较两者时遇到问题,因为在使用 max() 时出现错误。

这是迄今为止我的代码:


list_input_amount = int(input('How many items are in your list?: '))

for amount in range(list_input_amount):
    list_input = input('Please enter your list item: ')
    if list_input.isnumeric():
        random_list.append(int(list_input))
    else:
        random_list.append(list_input)

print(random_list)


def second_largest():
    maximum_list = set(random_list)
    maximum_list.remove(max(maximum_list))

    print(max(maximum_list))

second_largest()

提前感谢您的帮助

最佳答案

您可以使用字典 {} 来存储将用于比较的值,然后排序并获取第二个值。

这是获取第 n 个元素的更通用的代码:

# List comprehension
def nth_largest(values: {}, nth=0):
    return [k for k,v in sorted(values.items(), key=lambda kv:kv[1], reverse=True)][nth][0]

# Two steps
def nth_largest(values: {}, nth=0):
    sorted_x = sorted(values.items(), key=lambda kv: kv[1], reverse=True)
    return list(sorted_x)[nth][0]


if __name__ == '__main__':
    list_input_amount = int(input('How many items are in your list?: '))
    dico_values = {}
    for amount in range(list_input_amount):
        list_input = input('Please enter your list item: ')
        if list_input.isnumeric():
            dico_values[int(list_input)] = int(list_input)
        else:
            dico_values[list_input] = len(list_input)
    print(nth_largest(dico_values, 1))

关于python - 如何将字符串的长度与同一列表中的整数进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58718788/

相关文章:

python - pandas loc 函数在写入和读取时引用不同的行 -> ValueError

python - 列表和嵌套列表的简单点积以单独列表中的索引为条件

python - 如何在tensorflow中设置rmse成本函数

Python 增长字典或增长数据框 - 在循环中追加

python 3 替代 dircache?

python-3.x - 如何在 Python 3 中比较和可视化两个 .wav 文件?

Python - Fabric - 获取文件

python - 为什么我的优化求解器在 docker 中运行速度较慢?

python - Tkinter 鼠标颜色

python - 如何按值分组但保持数据结构?