[英]Sort values in list of dictionaries containing lists
我有一個字典列表,其中有一個列表作為它的價值。 我想根據列表的值對這個字典列表進行排序。 這是數據的樣子:
[{'len': [[1.0, 0.15167129908211108],
[0.15167129908211108, 0.9999999999999999]]},
{'count': [[1.0, -0.0062137259524966066],
[-0.006213725952496607, 0.9999999999999999]]},
{'dom_length': [[0.9999999999999999, 0.14866302421674646],
[0.14866302421674643, 0.9999999999999999]]},
{'p_length': [[1.0, 0.06551622215539057],
[0.06551622215539057, 0.9999999999999999]]},
{'date_length': [[1.0, 0.18233544694774714],
[0.18233544694774714, 0.9999999999999999]]},
{'file_length': [[0.9999999999999998, 0.08244043289497642],
[0.08244043289497642, 0.9999999999999999]]}]
我想對這些數據進行排序以返回前 3 個字典。 這是所需的輸出:
[{'date_length': [[1.0, 0.18233544694774714],
[0.18233544694774714, 0.9999999999999999]]},
{'len': [[1.0, 0.15167129908211108],
[0.15167129908211108, 0.9999999999999999]]},
{'dom_length': [[0.9999999999999999, 0.14866302421674646],
[0.14866302421674643, 0.9999999999999999]]}]
您可以按子列表的sum
的sum
進行排序,然后獲得前3
(假設字典中只有一個key-value
對,否則您需要另一個外部sum
或其他條件):
>>> sorted(your_list, key=lambda obj: sum(sum(sl) for sl in list(obj.values())[0]), reverse=True)[:3]
[{'date_length': [[1.0, 0.18233544694774714], [0.18233544694774714, 0.9999999999999999]]},
{'len': [[1.0, 0.15167129908211108], [0.15167129908211108, 0.9999999999999999]]},
{'dom_length': [[0.9999999999999999, 0.14866302421674646], [0.14866302421674643, 0.9999999999999999]]}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.