我正試圖將按每個數字的頻率對數字串列進行排序的解決方案應用到字串列中。
我對數字進行排序的解決方案是:
def num_sort_by_freq(list_of_nums)。
num_count = {}
for num in list_of_nums:
if num not in num_count。
num_count[num] =1
else:
num_count[num] = 1.
list_of_nums.sort(key = lambda x:num_count[x] )
return list_of_nums.
print(num_sort_by_freq([1,1,1,2, 2,2,2,3,3])
輸出。[1, 1, 1, 3, 3, 3, 2, 2, 2, 2]
嘗試對字符進行排序:
def char_sort_by_freq(string_to_be_list)。
list_of_chars = list(string_to_be_list)
char_count = {}
for char in list_of_chars:
if char not in Char_count:
char_count[char] = 1
else:
char_count[char] = 1.
list_of_chars.sort(key = lambda x:char_count[x] )
return ""/span>.join(list_of_chars)
print(char_sort_by_freq("asdfasdfasdddffff"))
輸出:asasdddffffff
預期輸出:aaasssdddffffffff
我已經看了太多遍,不明白為什么輸出的'a'和's'會錯亂在一起,而不是按順序排列。希望得到任何幫助。
編輯:非常感謝您的幫助! Lambda函式對我來說是一個新的領域。
uj5u.com熱心網友回復:
你可以改變你的key函式以回傳tuple來處理領帶:
def char_sort_by_freq(string_to_be_list) 。
list_of_chars = list(string_to_be_list)
char_count = {}
for char in list_of_chars:
if char not in Char_count:
char_count[char] = 1
else:
char_count[char] = 1.
list_of_chars.sort(key = lambda x:(char_count[x], x))
# ^^^^^^^^^^^^^^^^^
return ""/span>.join(list_of_chars)
print(char_sort_by_freq("asdfasdfasdddffffff")
輸出:
aaasssdddddfffffff
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/308570.html
標籤:
上一篇:TiDB 學習筆記一(運維管理)
