[英]sort a dictionary by values and by key tuple python
我想知道如何通過作為元組的鍵來組織字典:首先按第一個數字排序,然后是第二個字母,然后是第三個數字。
另外,我想知道如何首先按值組織(第一個值 1,然后是值 2,然后是值 3):
輸入:
d= {
(2,x,50):
{
'val1': 2,
'val2': x,
'val3': 50,
'val4': 'hu',
'val5': 'ho',
}
(1,a,30):
{
'val1': 1,
'val2': a,
'val3': 30,
'val4': 'hey',
'val5': 'hi',
},
(2,x,20):
{
'val1': 2,
'val2': x,
'val3': 20,
'val4': 'hu',
'val5': 'ho',
}
(2,b,10):
{
'val1': 2,
'val2': b,
'val3': 10,
'val4': 'hu',
'val5': 'ho',
}
}
OUTPUT:
d= {
(1,a,30):
{
'val1': 1,
'val2': a,
'val3': 30,
'val4': 'hey',
'val5': 'hi',
},
(2,b,10):
{
'val1': 2,
'val2': b,
'val3': 10,
'val4': 'hu',
'val5': 'ho',
}
(2,x,20):
{
'val1': 2,
'val2': x,
'val3': 20,
'val4': 'hu',
'val5': 'ho',
}
(2,x,50):
{
'val1': 2,
'val2': x,
'val3': 50,
'val4': 'hu',
'val5': 'ho',
}
}
我試過按鍵訂購:
sorted(d, key = operator.itemgetter(1))
並嘗試按值排序,但出現錯誤:
sorted(d, key = operator.itemgetter('val1', 'val2', 'val3'))
您可以嘗試對字典項進行排序,這將根據鍵對字典進行排序,然后可以使用字典理解將排序結果解析為字典。
d= {
(2,'x',50):
{
'val1': 2,
'val2': 'x',
'val3': 50,
'val4': 'hu',
'val5': 'ho',
},
(1,'a',30):
{
'val1': 1,
'val2': 'a',
'val3': 30,
'val4': 'hey',
'val5': 'hi',
},
(2,'x',20):
{
'val1': 2,
'val2': 'x',
'val3': 20,
'val4': 'hu',
'val5': 'ho',
},
(2,'b',10):
{
'val1': 2,
'val2': 'b',
'val3': 10,
'val4': 'hu',
'val5': 'ho',
}
}
print({i[0]: i[1] for i in sorted(d.items())})
Output
{
(1, 'a', 30): {'val1': 1, 'val2': 'a', 'val3': 30, 'val4': 'hey', 'val5': 'hi'},
(2, 'b', 10): {'val1': 2, 'val2': 'b', 'val3': 10, 'val4': 'hu', 'val5': 'ho'},
(2, 'x', 20): {'val1': 2, 'val2': 'x', 'val3': 20, 'val4': 'hu', 'val5': 'ho'},
(2, 'x', 50): {'val1': 2, 'val2': 'x', 'val3': 50, 'val4': 'hu', 'val5': 'ho'}
}
一種選擇可能只是:
dict(sorted(d.items()))
自 python 3.7 起,鍵的插入順序在字典中維護
dictionary = {
(2, "x", 50): {"val1": 2, "val2": "x", "val3": 50, "val4": "hu", "val5": "ho",},
(1, "a", 30): {"val1": 1, "val2": "a", "val3": 30, "val4": "hey", "val5": "hi",},
(2, "x", 20): {"val1": 2, "val2": "x", "val3": 20, "val4": "hu", "val5": "ho",},
(2, "b", 10): {"val1": 2, "val2": "b", "val3": 10, "val4": "hu", "val5": "ho",},
}
sorted_dictionary = {key: dictionary[key] for key in sorted(dictionary)}
print(sorted_dictionary)
{
(1, "a", 30): {"val1": 1, "val2": "a", "val3": 30, "val4": "hey", "val5": "hi"},
(2, "b", 10): {"val1": 2, "val2": "b", "val3": 10, "val4": "hu", "val5": "ho"},
(2, "x", 20): {"val1": 2, "val2": "x", "val3": 20, "val4": "hu", "val5": "ho"},
(2, "x", 50): {"val1": 2, "val2": "x", "val3": 50, "val4": "hu", "val5": "ho"},
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.