Python 3.x 引用元组中的数字

Python 3.x 引用元组中的数字,python-3.x,types,Python 3.x,Types,我想用数字按降序排列一个元组列表,类似于下面的一个元组: 数据=[('ralph picked',['nose','4','apple','30','winner','3']), ('aaron popped'、['soda'、'1'、'爆米花'、'6'、'药丸'、'4', "问题","29"]] 我想对嵌套列表进行排序,使结果看起来有点像: data2 = [('ralph picked', ['apple', '30', 'nose', '4', 'winner', '3']), ('aa

我想用数字按降序排列一个元组列表,类似于下面的一个元组:

数据=[('ralph picked',['nose','4','apple','30','winner','3']), ('aaron popped'、['soda'、'1'、'爆米花'、'6'、'药丸'、'4', "问题","29"]]

我想对嵌套列表进行排序,使结果看起来有点像:

data2 = [('ralph picked', ['apple', '30', 'nose', '4', 'winner', '3']), 
('aaron popped', ['question', '29', 'popcorn', '6', 'pill', '4', 'soda', '1'])]
我正在尝试将此代码用于:

data2=[]
for k, v in data:
    data2 = ((k,   sorted(zip(data[::2], data[1::2]), key=lambda x: int(x[1]), reverse=True)  ))
    [value for pair in data2 for value in pair]
print(data2)
但我一直收到错误信息:

TypeError: int() argument must be a string or a number, not 'tuple'

我试图将
key=lambda x:int(x[1])
中的
int
重新排列成不同的东西,但我一直得到相同的信息,我对python非常陌生,语法经常让我感到困惑。有没有办法解决这个问题?我真的非常感谢你

与其尝试一次完成所有事情,不如给事情起个名字:

data = [('ralph picked', ['nose', '4', 'apple', '30', 'winner', '3']),
        ('aaron popped', ['soda', '1', 'popcorn', '6', 'pill', '4', 'question', '29'])]

data2 = []
for k, v in data:
    new_list = sorted(zip(v[::2], v[1::2]), key=lambda x: int(x[1]), reverse=True)
    flattened = [value for pair in new_list for value in pair]
    new_tuple = (k, flattened)
    data2.append(new_tuple)
产生

>>> print(data2)
[('ralph picked', ['apple', '30', 'nose', '4', 'winner', '3']), 
 ('aaron popped', ['question', '29', 'popcorn', '6', 'pill', '4', 'soda', '1'])]
您需要区分
数据
v
——您只需要对
v
进行排序,并且需要存储列表理解的结果,否则您只是在构建并丢弃它

当您在语法方面遇到问题时,将所有内容分解成若干部分,然后
打印它们以查看发生了什么。例如,您可以将
新列表
分解为

words = v[::2]
numbers = v[1::2]
pairs = zip(words, numbers)
sorted_pairs = sorted(pairs, key=lambda x: int(x[1]), reverse=True)

排序的\u对
就是
新的\u列表
的真正含义。

非常感谢!!这真的帮了我大忙!