我的任务是从用户那里获取一个列表并打印出该列表中的第二大项目。
用户应该能够输入字符串或整数。
我在比较两者时遇到问题,因为在使用 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/