如何在python中对字典中的列表进行排序?
我有以下以json格式表示数据的字典:如何在python中对字典中的列表进行排序?,python,sorting,dictionary,Python,Sorting,Dictionary,我有以下以json格式表示数据的字典: {'0': {'related_items': [6, 7], 'values': [0.8111071056538126, 0.8660254037844388]}, '1': {'related_items': [5, 8], 'values': [0.9999999999999998, 0.7071067811865475]}, '222': {'related_items': [], 'values': []}, '33': {'re
{'0': {'related_items': [6, 7],
'values': [0.8111071056538126, 0.8660254037844388]},
'1': {'related_items': [5, 8],
'values': [0.9999999999999998, 0.7071067811865475]},
'222': {'related_items': [], 'values': []},
'33': {'related_items': [], 'values': []},
'44': {'related_items': [99], 'values': [0.7071067811865475]},
'5': {'related_items': [1, 8],
'values': [0.9999999999999998, 0.7071067811865475]},
'6': {'related_items': [0, 7, 99],
'values': [0.8111071056538126, 0.936585811581694, 0.8111071056538126]},
'7': {'related_items': [0, 6, 99],
'values': [0.8660254037844388, 0.936585811581694, 0.8660254037844388]},
'8': {'related_items': [1, 5],
'values': [0.7071067811865475, 0.7071067811865475]},
'99': {'related_items': [44, 6, 7],
'values': [0.7071067811865475, 0.8111071056538126, 0.8660254037844388]}}
我想根据值列表的顺序对相关的\u项列表进行排序:
例如,对于项目“0”,列表的顺序如下:
{'0':{'related_items':[7,6],
“值”:[0.8660254037844388,0.8111071056538126]}
for i, j in json_data.items():
r = j['related_items']
s = j['values']
if r:
sim_final, rel_final = (list(t) for t in zip(*sorted(zip(s, r),reverse=True)))
json_data[i]['values']=sim_final
json_data[i]['related_items']=rel_final
预期产出:
{'0': {'related_items': [7, 6],
'values': [0.8660254037844388, 0.8111071056538126]},
'1': {'related_items': [5, 8],
'values': [0.9999999999999998, 0.7071067811865475]},
'222': {'related_items': [], 'values': []},
'33': {'related_items': [], 'values': []},
'44': {'related_items': [99], 'values': [0.7071067811865475]},
'5': {'related_items': [1, 8],
'values': [0.9999999999999998, 0.7071067811865475]},
'6': {'related_items': [7, 99, 0],
'values': [0.936585811581694, 0.8111071056538126, 0.8111071056538126]},
'7': {'related_items': [6, 99, 0],
'values': [0.936585811581694, 0.8660254037844388, 0.8660254037844388]},
'8': {'related_items': [5, 1],
'values': [0.7071067811865475, 0.7071067811865475]},
'99': {'related_items': [7, 6, 44],
'values': [0.8660254037844388, 0.8111071056538126, 0.7071067811865475]}}
我的实际dict非常大。如何简化上述代码中的for循环
for k, v in json_data.items():
x = v["related_items"]
x.sort(reverse=True)
y = []
for i in x:
y.append(v["values"][v["related_items"].index(i)])
v["related_items"] = x
v["values"] = y
不确定它是否更优雅,但我会这么做。无论你应用的逻辑是正确的,甚至已经很简单了?是的,但我的dict非常大,迭代dict中的每个项目需要很多时间…然后使用生成器来管理负载/内存。这种对“值”和“相关项”的排序-这不是我期望的-我想对e‘values’并使用它来重新排序‘related_items’遗漏了该位,我将删除答案,然后使用可能更好的选项删除