![](/img/trans.png)
[英]Sorting a dictionary with lists as values, according to an element from the list
[英]Sorting a list according to a dictionary (beginner)
我有以下清單:
listofanimals = ['Dog', 'Cat', 'Frog', 'Tiger', 'Sheep', 'Lion']
我想根據字典對這個列表進行排序:
score_card = {0: 'Sheep', 1: 'Dog', 2: 'Cat', 3: 'Tiger', 4: 'Frog', 5: 'Lion'}
其中最終列表的順序必須是從 0 到 5,即
numberorder = [0, 1, 2, 3, 4, 5]
我想在函數中創建它。 這就是我所擁有的:
def sorter():
listofanimals = ['Dog', 'Cat', 'Frog', 'Tiger', 'Sheep', 'Lion']
score_card = {0: 'Sheep', 1: 'Dog', 2: 'Cat', 3: 'Tiger', 4: 'Frog', 5: 'Lion'}
numbers = [0, 1, 2, 3, 4, 5]
finallist = []
for i in listofanimals:
print(numbers[listofanimals.index(i)])
q.append(numbers[listofanimals.index(i)])
print(q)
q = sorted(q)
finallist = [score_card[j] for j in q]
return finallist
我不知道如何將 listofanimals 轉換為數字,所以我可以對數字進行排序,然后反饋到字典中以獲取值,但我無法讓它工作。 任何幫助表示贊賞。
反轉你的字典
data = {'Sheep':0, 'Dog':1, 'Cat':2, 'Tiger': 3, 'Frog':4, 'Lion':5}
(如果需要,可以通過編程方式反轉它,請參閱其他答案)
現在你可以簡單地
my_sorted_list = sorted(my_list,key = data.get)
listofanimals = ['Dog', 'Cat', 'Frog', 'Tiger', 'Sheep', 'Lion']
score_card = {0: 'Sheep', 1: 'Dog', 2: 'Cat', 3: 'Tiger', 4: 'Frog', 5: 'Lion'}
inverted_score_card = {v: k for k, v in score_card.items()}
sorted_list = sorted(listofanimals, key=inverted_score_card.__getitem__)
print(sorted_list)
輸出:
['Sheep', 'Dog', 'Cat', 'Tiger', 'Frog', 'Lion']
您可以反轉score_card
字典以使事情變得簡單。
score_card = {0: 'Sheep', 1: 'Dog', 2: 'Cat', 3: 'Tiger', 4: 'Frog', 5: 'Lion'}
score_card={v:k for k,v in score_card.items()}
# {'Sheep':0, 'Dog':1, 'Cat':2, 'Tiger': 3, 'Frog':4, 'Lion':5}
sorted(listofanimals,key=lambda x:score_card[x])
# ['Sheep', 'Dog', 'Cat', 'Tiger', 'Frog', 'Lion']
如果你不想使用lambda
你可以使用itemgetter
sorted_dictionary = dict(sorted(score_card.items()))
sorted = []
for key, value in sorted_dictionary.items():
for item in listofanimals:
if value == item:
sorted.insert(key, item)
輸出:
['Sheep', 'Dog', 'Cat', 'Tiger', 'Frog', 'Lion']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.