Python编程题18--统计字母出现次数并排序

2020-12-26  本文已影响0人  wintests

题目

给定一个列表,列表元素仅包含字母,请统计每个字母的出现次数,并按出现次数排序,要求最终返回结果为字典形式。

例如:

给定一个列表:["a", "a", "c", "b", "d", "c", "c", "c", "d", "d"]
返回结果:{"c": 4, "d": 3, "a": 2, "b": 1}

实现思路1

注意:sorted() 返回的结果是一个新的列表list ,这里需要转换为字典格式再返回

代码实现

from collections import Counter

def demo(str_list):
    temp = Counter(str_list)
    res_list = sorted(temp.items(), key=lambda x: x[1], reverse=True)
    res_dict = dict(res_list)
    return res_dict

str_list = ["a", "a", "c", "b", "d", "c", "c", "c", "d", "d"]
print(demo(str_list))

实现思路2

代码实现

def demo(str_list):
    temp_dict = {}
    for i in str_list:
        if i not in temp_dict:
            temp_dict[i] = 1
        else:
            temp_dict[i] += 1
    key_list = list(temp_dict.keys())
    value_list = list(temp_dict.values())
    for i in range(len(value_list) - 1):
        for j in range(len(value_list) - i - 1):
            if value_list[j] > value_list[j + 1]:
                value_list[j], value_list[j + 1] = value_list[j + 1], value_list[j]
                key_list[j], key_list[j + 1] = key_list[j + 1], key_list[j]
    res_dict = dict(zip(key_list[::-1], value_list[::-1]))
    return res_dict

str_list = ["a", "a", "c", "b", "d", "c", "c", "c", "d", "d"]
print(demo(str_list))

实现思路3

代码实现

def demo(str_list):
    temp_list = []
    temp_set = set(str_list)
    for i in temp_set:
        temp_list.append((i, str_list.count(i)))
    for i in range(len(temp_list) - 1):
        for j in range(len(temp_list) - i - 1):
            if temp_list[j][1] > temp_list[j + 1][1]:
                temp_list[j], temp_list[j + 1] = temp_list[j + 1], temp_list[j]
    res_dict = dict(temp_list[::-1])
    return res_dict

str_list = ["a", "a", "c", "b", "d", "c", "c", "c", "d", "d"]
print(demo(str_list))

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

上一篇下一篇

猜你喜欢

热点阅读