簡體   English   中英

根據python中的字典值對列表進行排序?

[英]Sort a list based on dictionary values in python?

假設我有一本字典,然后我有一個包含字典鍵的列表。 有沒有辦法根據字典值對列表進行排序?

我一直在嘗試這個:

trial_dict = {'*':4, '-':2, '+':3, '/':5}
trial_list = ['-','-','+','/','+','-','*']

我去使用:

sorted(trial_list, key=trial_dict.values())

並得到:

TypeError: 'list' object is not callable

然后我去創建一個可以用trial_dict.get()調用的函數:

def sort_help(x):
    if isinstance(x, dict):
        for i in x:
            return x[i]

sorted(trial_list, key=trial_dict.get(sort_help(trial_dict)))

我不認為sort_help函數對排序有任何影響。 我不確定使用trial_dict.get()是否是解決此問題的正確方法。

是的dict.get是正確的(或者至少是最簡單的)方法:

sorted(trial_list, key=trial_dict.get)

正如 Mark Amery 所評論的,等效的顯式 lambda:

sorted(trial_list, key=lambda x: trial_dict[x])

可能會更好,至少有兩個原因:

  1. 排序表達式可見並可立即編輯
  2. 它不會抑制錯誤(當列表包含不在字典中的內容時)。

sorted內置函數(或列表的sort方法)中的 key 參數必須是一個函數,它將您正在排序的列表成員映射到您想要排序的值。 所以你想要這個:

sorted(trial_list, key=lambda x: trial_dict[x])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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