我想按嵌套 lsits 的第二個條目中的數值對嵌套串列進行排序。
name= ['Harry', 'Berry', 'Tina', 'Akriti', 'Harsh']
score = [37.21, 37.21, 37.2, 41.0, 39.0]
mylist = [[title, grade] for title in name for grade in score]
test = sorted(mylist, key=lambda x:x[1])
但是由于某種原因,這會重復條目。為什么不按嵌套串列中的第二個條目對串列進行排序?
test
[['Harry', 37.2], ['Berry', 37.2], ['Tina', 37.2], ['Akriti', 37.2], ['Harsh', 37.2], `['Harry', 37.21], ['Harry', 37.21], ['Berry', 37.21], ['Berry', 37.21], ['Tina', 37.21], ['Tina', 37.21], ['Akriti', 37.21], ['Akriti', 37.21], ['Harsh', 37.21], ['Harsh', 37.21], ['Harry', 39.0], ['Berry', 39.0], ['Tina', 39.0], ['Akriti', 39.0], ['Harsh', 39.0], ['Harry', 41.0], ['Berry', 41.0], ['Tina', 41.0], ['Akriti', 41.0], ['Harsh', 41.0]]`
uj5u.com熱心網友回復:
你想要zip:
>>> name= ['Harry', 'Berry', 'Tina', 'Akriti', 'Harsh']
>>> score = [37.21, 37.21, 37.2, 41.0, 39.0]
>>> sorted(zip(score, name))
[(37.2, 'Tina'), (37.21, 'Berry'), (37.21, 'Harry'), (39.0, 'Harsh'), (41.0, 'Akriti')]
可以將這zip兩個串列相加:
[(score[0], name[0]), (score[1], name[1]), ...]
而您所做的嵌套理解更像是將它們相乘:
[[name[0], score[0]], [name[1], score[0]], [name[2], score[0], ..., [name[0], score[1]], [name[1], score[1]], [name[2], score[1], ...]
uj5u.com熱心網友回復:
你的迭代兩次。
# using enumerate
mylist = [[title, score[ind]] for ind, title in eunmerate(name)]
# Using zip
mylist = zip(name, score)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/351241.html
