python字典中键值对的排序列表

python字典中键值对的排序列表,python,list,sorting,dictionary,adjacency-list,Python,List,Sorting,Dictionary,Adjacency List,如何在python中对存储为字典的邻接列表进行排序 Adjacency List: 0: [(7, 0.16), (4, 0.38), (2, 0.26), (6, 0.58)] 1: [(5, 0.32), (7, 0.19), (2, 0.36), (3, 0.29)] 2: [(3, 0.17), (0, 0.26), (1, 0.36), (7, 0.34), (6, 0.4)] 3: [(2, 0.17), (1, 0.29), (6, 0.52)] 4: [(5, 0.35), (7

如何在python中对存储为字典的邻接列表进行排序

Adjacency List:
0: [(7, 0.16), (4, 0.38), (2, 0.26), (6, 0.58)]
1: [(5, 0.32), (7, 0.19), (2, 0.36), (3, 0.29)]
2: [(3, 0.17), (0, 0.26), (1, 0.36), (7, 0.34), (6, 0.4)]
3: [(2, 0.17), (1, 0.29), (6, 0.52)]
4: [(5, 0.35), (7, 0.37), (0, 0.38), (6, 0.93)]
5: [(4, 0.35), (7, 0.28), (1, 0.32)]
6: [(2, 0.4), (3, 0.52), (0, 0.58), (4, 0.93)]
7: [(4, 0.37), (5, 0.28), (0, 0.16), (1, 0.19), (2, 0.34)]
我希望每一行都按浮点数排序

这是添加值的方式,但使用循环并从标准输入而不是手动读取:

adjList = defaultdict(list)
adjList[0].append((7, 0.16))
我知道我必须使用sorted(),我也尝试过这样的方法:

sorted(adjList)

返回给定iterable的新排序列表。如果要就地排序,请使用:

key=itemgetter(1)
确保它在元组的第二个元素上排序,或者您也可以编写
key=lambda x:x[1]

如果要按降序排序,请使用
key=itemgetter(1),reverse=True

返回给定iterable的新排序列表。如果要就地排序,请使用:

key=itemgetter(1)
确保它在元组的第二个元素上排序,或者您也可以编写
key=lambda x:x[1]


如果要按降序排序,请使用
key=itemgetter(1),reverse=True

以下是一个工作示例:

my_dict = {
    0: [(7, 0.16), (4, 0.38), (2, 0.26), (6, 0.58)],
    1: [(5, 0.32), (7, 0.19), (2, 0.36), (3, 0.29)],
    2: [(3, 0.17), (0, 0.26), (1, 0.36), (7, 0.34), (6, 0.4)],
    3: [(2, 0.17), (1, 0.29), (6, 0.52)],
    4: [(5, 0.35), (7, 0.37), (0, 0.38), (6, 0.93)],
    5: [(4, 0.35), (7, 0.28), (1, 0.32)],
    6: [(2, 0.4), (3, 0.52), (0, 0.58), (4, 0.93)],
    7: [(4, 0.37), (5, 0.28), (0, 0.16), (1, 0.19), (2, 0.34)]
}

out = {k: sorted(v, key=lambda x: x[1]) for k, v in my_dict.iteritems()}
print out

下面是一个工作示例:

my_dict = {
    0: [(7, 0.16), (4, 0.38), (2, 0.26), (6, 0.58)],
    1: [(5, 0.32), (7, 0.19), (2, 0.36), (3, 0.29)],
    2: [(3, 0.17), (0, 0.26), (1, 0.36), (7, 0.34), (6, 0.4)],
    3: [(2, 0.17), (1, 0.29), (6, 0.52)],
    4: [(5, 0.35), (7, 0.37), (0, 0.38), (6, 0.93)],
    5: [(4, 0.35), (7, 0.28), (1, 0.32)],
    6: [(2, 0.4), (3, 0.52), (0, 0.58), (4, 0.93)],
    7: [(4, 0.37), (5, 0.28), (0, 0.16), (1, 0.19), (2, 0.34)]
}

out = {k: sorted(v, key=lambda x: x[1]) for k, v in my_dict.iteritems()}
print out
您可以使用一个按键功能。由于要按每个元组的第二个元素排序,因此键函数必须从每个元组中选择第二项(
t[1]
),即
t

for key in adjList:
    d[key].sort(key=lambda t: t[1])
list.sort()
将对列表进行就地排序,无需重新绑定变量。

您可以使用键函数。由于要按每个元组的第二个元素排序,因此键函数必须从每个元组中选择第二项(
t[1]
),即
t

for key in adjList:
    d[key].sort(key=lambda t: t[1])
list.sort()
将对列表进行就地排序,无需重新绑定变量

for key in adjList:
    d[key].sort(key=lambda t: t[1])