簡體   English   中英

對包含列表的字典列表中的值進行排序

[英]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]]}]

您可以按子列表的sumsum進行排序,然后獲得前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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM