Python 3.x 引用元组中的数字
我想用数字按降序排列一个元组列表,类似于下面的一个元组: 数据=[('ralph picked',['nose','4','apple','30','winner','3']), ('aaron popped'、['soda'、'1'、'爆米花'、'6'、'药丸'、'4', "问题","29"]] 我想对嵌套列表进行排序,使结果看起来有点像: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
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列表
的真正含义。非常感谢!!这真的帮了我大忙!