我有这个特定的数据集:
{
"Player 1": [0, 1, 3, 5, 7, 0]
"Player 2": [3, 2, 4, 7, 6, 1]
"Player 3": [1, 3, 5, 4, 5, 1]
}
,并且需要从低到高的输出(元素0已重新排序列表):
{
"Player 1": [0, 1, 3, 5, 7, 0]
"Player 3": [1, 3, 5, 4, 5, 1]
"Player 2": [3, 2, 4, 7, 6, 1]
}
或基于从高到低的此输出(元素0对列表进行了重新排序):
{
"Player 2": [3, 2, 4, 7, 6, 1]
"Player 3": [1, 3, 5, 4, 5, 1]
"Player 1": [0, 1, 3, 5, 7, 0]
}
此处的输出显示了键/值的重新排序,因为每个列表中元素0中的值已按从低到高的顺序排序。我一直在考虑如何执行此操作,尽管我当前的数据模型不需要为每个“条目”提供键/值对,但这是最有意义的。
我不太确定如何尽可能高效地执行此操作,例如仅抓取元素0,创建临时列表,重新排序临时列表并将dict条目重新映射为该顺序。
或者,在列表中搜索并按从最高到最低,从最低到最高的顺序重新排序,并在每个元素变为最低可用或最高可用状态时弹出每个元素,然后从顶部开始。
最有效的方法是什么?
答案 0 :(得分:0)
您可以使用sorted
,
x = {"Player 1": [0, 1, 3, 5, 7, 0],
"Player 2": [3, 2, 4, 7, 6, 1],
"Player 3": [1, 3, 5, 4, 5, 1]}
output = dict(sorted(x.items(), key = lambda x: x[1][0]))
output_reverse = dict(sorted(x.items(), key = lambda x: x[1][0], reverse=True))
print(output)
print(output_reverse)
# output,
{'Player 1': [0, 1, 3, 5, 7, 0], 'Player 3': [1, 3, 5, 4, 5, 1], 'Player 2': [3, 2, 4, 7, 6, 1]}
{'Player 2': [3, 2, 4, 7, 6, 1], 'Player 3': [1, 3, 5, 4, 5, 1], 'Player 1': [0, 1, 3, 5, 7, 0]}