微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据元组列表对元组列表进行排序-Python

如何解决根据元组列表对元组列表进行排序-Python

|| 我正在尝试根据另一个元组列表通过该列表中的键对元组列表进行排序。 说我有以下几点:
list1 = [(5,\'something\'),(2,\'bobby\'),(9,\'suzy\'),(6,\'crab\')]
list2 = [(\'something\',\'othervalues\'),(\'suzy\',\'stuff\'),(\'bobby\',\'otherthings\')]
然后,我将在list1中每个元组的第一个元素上收到输出soring。
sorted = [(\'suzy\',(\'something\',\'otherthings\') ]
因此,基本上,它执行交集,然后按list1元组中的第一个元素对剩余值进行排序。 我不确定该如何处理,因此任何帮助都将非常有用。     

解决方法

只需按照描述中的内容进行操作,就可以通过另一个元组列表中的键对元组列表进行排序:
rank = {key:rank for rank,key in list1}
print(sorted(list2,key=lambda t: rank.get(t[0]),reverse=True))
    ,首先从
list1
创建字典:
>>> order = dict(reversed(t) for t in list1)
这将创建一个“ 5”映射。 然后,您可以使用
sorted
方法(不要这样命名变量)和
lambda
表达式作为
key
>>> sorted(list2,key=lambda x: order[x[0]],reverse=True)
[(\'suzy\',\'stuff\'),(\'something\',\'othervalues\'),(\'bobby\',\'otherthings\')]
或者,如果您想就地排序:
>>> list2.sort(key=lambda x: order[x[0]],reverse=True)
值得一读:排序方式     ,如果是
list2
dict
,这会很容易,例如:
{\'bobby\': \'otherthings\',\'something\': \'othervalues\',\'suzy\': \'stuff\'}
Python将为您完成转换:
>>> dict2 = dict(list2)
然后您可以使用
list comprehension
>>> [(k,dict2[k]) for _,k in sorted(list1,reverse=True) if k in dict2]
[(\'suzy\',\'otherthings\')]
N.B:
sorted
是内置的Python函数,并且是变量名的错误选择。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。