【发布时间】:2015-02-27 10:10:46
【问题描述】:
我有一本字典:-
{
(1, 1): 16,
(1, 2): 16,
(1, 3): 16,
(1, 4): 16,
(2, 1): 24,
(2, 2): 24,
(2, 3): 24,
(2, 4): 24 }
...我希望它按照元组键的第二个字段以及字典的值字段进行排序...所以结果字典应该是:-
{
(2, 1): 24,
(2, 2): 24,
(2, 3): 24,
(2, 4): 24,
(1, 1): 16,
(1, 2): 16,
(1, 3): 16,
(1, 4): 16
}
...我尝试单独使用 value 对其进行排序,但它弄乱了键元组的顺序 .... 是的,所以我后来通过这样做将它分配给了一个列表 ...
list = sorted(unsorted_dict, key = unsorted_dict.__getitem__, reverse=True)....
很抱歉,但回答部分解决了我的情况......
我不想考虑排序的第一个值..可以说我有初始数据....
{
(5, 1): 16,
(6, 2): 16,
(7, 3): 16,
(8, 4): 16,
(4, 1): 24,
(3, 2): 24,
(2, 3): 24,
(1, 4): 24 }
我想要输出...
{
(4, 1): 24,
(3, 2): 24,
(2, 3): 24,
(1, 4): 24,
(5, 1): 16,
(6, 2): 16,
(7, 3): 16,
(8, 4): 16 }
....正如我所说,我想考虑元组的 second 值进行排序,而根本不考虑排序的第一个值...如果有人能说出这将是一个很大的帮助。 .我如何从这个排序的字典中提取元组到一个类似的列表中..
(4, 1),(3, 2),(2, 3),(1, 4),(5, 1),(6, 2),(7, 3),(8, 4)
编辑:所以评论有助于得到我想要的...非常感谢...
list_sorted = sorted(unsorted_dict.items(),key=lambda x: (-x[1],x[0][1]))
for val in list_sorted:
final_list.append(val[0])
更正了键值对感谢@Padraic Cunningham 指出
【问题讨论】:
-
但是字典是无序的。
-
我可以在之后删除值并获取元组列表。所以基本上值可以帮助我排序(我优先使用它)...我感兴趣的是列表元组及其根据分配给它们的优先级的顺序
标签: python dictionary tuples