我想对这个元组列表进行排序,首先是整数的值,然后是每个元组中字符串的长度,但不知道如何去做。
[(10,'ATAGCTAT'),(4,'TTAGCTA'),(6,'AATTAATCGAT'),(6,'GCTATAGC')]
答案 0 :(得分:2)
尝试
sorted(s, key=lambda v: (v[0], len(v[1]), v[1]))
这使用key
的{{1}}参数创建一个新元组,其中包含您要根据需要排序的信息。
请注意,我将实际字符串作为元组中的第三个值包含在内,以便仅为第一个值和字符串长度打破关系。如果你愿意,你可以删除它。
对于你的例子,那就是
sorted()
答案 1 :(得分:1)
使用整数值的元组和字符串项的长度排序:
In [1]: s = [(10, 'ATAGCTAT'), (4, 'TTAGCTA'), (6, 'AATTAATCGAT'), (6, 'GCTATAGC')]
In [2]: sorted(s, key=lambda v: (v[0], len(v[1]), v[1]))
Out[2]: [(4, 'TTAGCTA'), (6, 'GCTATAGC'), (6, 'AATTAATCGAT'), (10, 'ATAGCTAT')]
答案 2 :(得分:0)
使用使用所需条件的自定义排序键:
{
"survey_id": "111237200",
"collector": {
"send": true,
"recipients": [{
...
}]
},
"email_message": {
"subject": "Ice and Fire event",
"reply_email": "sunil@ljhjhjk.com"
}
}
答案 3 :(得分:0)
您可以使用sorted()函数并根据排序条件将参数传递给密钥。
以下教程提供了sorted()函数的不同示例。
https://docs.python.org/3.5/howto/sorting.html#sortinghowto
<强>解决方案:强>
>>> mylist = [(10, 'ATAGCTAT'), (4, 'TTAGCTA'), (6, 'AATTAATCGAT'), (6, 'GCTATAGC')]
>>> sorted(mylist, key=lambda val: (val[0], len(val[1])))
[(4, 'TTAGCTA'), (6, 'GCTATAGC'), (6, 'AATTAATCGAT'), (10, 'ATAGCTAT')]