我這里有一本字典:
test_dict = {'gfg': ['One', 'six', 'three'],
'is': ['seven', 'eight', 'nine'],
'best': ['ten', 'six']}
我試過了:
for i in range(len(test_dict)):
values = list(test_dict.values())
keys = list(test_dict)
value_sorted_list = values[i]
value_sorted_list = keys[i]
keys_sorted_list = random.shuffle(value_sorted_list)
test_dict.update({f"{keys_sorted_list}":value_sorted_list})
我想按字母順序對鍵進行排序,而值按長度排序是這樣的:
test_dict = {'best': ['six', 'ten'],
'gfg': ['One', 'six', 'three'],
'is': ['nine', 'eight', 'seven]}
我還想要另一個類似于我上面提到的函式,但如果元素的長度相似,則對它們進行隨機排序。
以及另一個隨機排序值串列的功能。
uj5u.com熱心網友回復:
按字母順序對鍵進行排序,按長度對值進行排序。
new_dict = {}
for key in sorted(test_dict.keys()):
sorted_values = sorted(test_dict[key], key=len)
new_dict[key] = sorted_values
print(new_dict)
uj5u.com熱心網友回復:
這可以通過字典理解來實作,如下所示:
test_dict = {'gfg': ['One', 'six', 'three'],
'is': ['seven', 'eight', 'nine'],
'best': ['ten', 'six']}
new_dict = {k:sorted(v, key=len) for k, v in sorted(test_dict.items())}
print(new_dict)
輸出:
{'best': ['ten', 'six'], 'gfg': ['One', 'six', 'three'], 'is': ['nine', 'seven', 'eight']}
uj5u.com熱心網友回復:
dict
從 3.7 開始保留插入順序。
在 3.7 版更改:字典順序保證是插入順序。此行為是 CPython 從 3.6 開始的一個實作細節。
因此,你可以簡單地根據排序后的鍵構造一個新的字典,并保證對應的值是有序的。從您發布的輸出中,該值首先按長度排序,然后按字母順序排序。
result = {key: sorted(value, key=lambda x: (len(x), x)) for key, value in sorted(test_dict.items())} # Thanks to Masklinn
print(result)
# {'best': ['six', 'ten'], 'gfg': ['One', 'six', 'three'], 'is': ['nine', 'eight', 'seven']}
參考:
dict-comprehension
- 一種構造字典的方法
sorted
- 這里的關鍵函式實作了先按長度排序再按字母排序。您可以根據您的排序規則更改它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/537606.html
上一篇:誰能解釋這里發生了什么object[val]=(object[val]||0) 1[duplicate]
下一篇:函式引數函式不能操作陣列