Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何按大小对包含字符串和int的列表进行排序,然后在Python3中输出int或string_Python_Sorting - Fatal编程技术网

如何按大小对包含字符串和int的列表进行排序,然后在Python3中输出int或string

如何按大小对包含字符串和int的列表进行排序,然后在Python3中输出int或string,python,sorting,Python,Sorting,我有这个代码,它将对输入进行排序,但它唯一的工作方式是在输入列表之前对输入进行排序。我想重新编写代码以获取任何列表并输出单词或数字,以第二大的为准 def secound_largest(values: {}): sorted_values = sorted(values.items(), key=lambda kv: kv[1], reverse=True) second_maximum = list(sorted_values)[1][0] print(str(sec

我有这个代码,它将对输入进行排序,但它唯一的工作方式是在输入列表之前对输入进行排序。我想重新编写代码以获取任何列表并输出单词或数字,以第二大的为准

def secound_largest(values: {}):
    sorted_values = sorted(values.items(), key=lambda kv: kv[1], reverse=True)
    second_maximum = list(sorted_values)[1][0]
    print(str(second_maximum)+ 'is the second largest item on the list')

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

    secound_largest(dictonary_values)

以下代码将执行您想要的操作:

def argmax(subscriptable):
    _max = subscriptable[0]
    _max_inv = 0
    for idx in range(1, len(subscriptable)):
        elem = subscriptable[idx]
        if elem > _max:
            _max = elem
            _max_inv = idx
    return _max_inv

def second_large_arg(subscriptable):
    big1 = subscriptable[0]
    big2 = subscriptable[1]
    big1_inv = 0
    big2_inv = 1
    if big1 < subscriptable[1]:
        big1 = subscriptable[1]
        big2 = subscriptable[0]
        big1_inv = 1
        big2_inv = 0
    for idx in range(2, len(subscriptable)):
        elem = subscriptable[idx]
        if elem > big1:
            big2_inv = big1_inv
            big1 = elem
            big1_inv = idx
        elif elem > big2:
            big2 = elem
            big2_inv = idx
    return big2_inv

d = {
    0:23,
    1:83,
    2:999999999999999999999999999999,
    3:87,
    4:91,
    5:32111111,
    6:21
}
print(argmax(d)) # prints 2
print(second_large_arg(d)) # prints 5

L = {
    0:"apple",
    1:1,
    2:"SUBDERMATOGLYPHIC",
    3:"banana",
    4:99999999999999,
    5:2
}

L = [len(x) if hasattr(x, "__len__") else x for x in L.values()]

print(L)

print(argmax(L))  # prints 4
print(second_large_arg(L))  # prints 2
def argmax(可下标):
_max=可下标[0]
_最大库存=0
对于范围(1,len(可下标))内的idx:
elem=可下标[idx]
如果元素>最大值:
_最大=元素
_最大库存=idx
返回最大库存
def第二个大参数(可下标):
big1=可下标[0]
big2=可下标[1]
big1\U inv=0
big2_inv=1
如果big1<可下标[1]:
big1=可下标[1]
big2=可下标[0]
big1_inv=1
big2_inv=0
对于范围(2,len(可下标))内的idx:
elem=可下标[idx]
如果elem>big1:
big2\u inv=big1\u inv
big1=元素
big1_inv=idx
elif elem>big2:
big2=元素
big2_inv=idx
返回big2_inv
d={
0:23,
1:83,
2:999999999999999999999999999999,
3:87,
4:91,
5:32111111,
6:21
}
打印(argmax(d))#打印2
打印(第二个大参数(d))#打印5
L={
0:“苹果”,
1:1,
2:“亚皮纹”,
3:“香蕉”,
4:99999999999999,
5:2
}
L=[len(x)如果hasattr(x,“\uuu len\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
印刷品(L)
打印(argmax(L))#打印4
打印(第二个大参数(L))#打印2
list2=[]
列表=[3,5,'python',2,-1,7]
对于范围内的i(len(列表)):
尝试:
item=[len(list[i]),list.index(list[i])]
列表2.追加(项目)
除类型错误外:
item=[list[i],list.index(list[i])]
列表2.追加(项目)
list2.sort(key=lambda x:x[0],reverse=True)
打印(列表[列表2[1][1]]

请将您的帖子重点放在问题上,而不是当前实施的全部内容上。例如,您的主程序似乎只是为了构建有问题的dict而存在的。用一个字面的dict来代替这个来说明你的问题。包括一个或两个当前输出和所需输出的示例。不确定如何像您那样编辑现有代码,但例如[3,5,'python',2,-1,7]=>python'[44,33,22,30,'Nashville',3,'bird',11]=>33使用问题下方的
编辑
选项卡。编辑说明在介绍教程中。@devans如果列表中包含[1,2,3,99,99,99,99,99,99,99]是“第二大”数字
99
还是“第二大”数字
3
?我就是这样做的