开发者社区> 问答> 正文

python 列表排序问题

已解决

a_list=[['黑色',110], ['白色',120],['黑色',113],['红色', 121],['白色',111],['白色',102]]

有什么办法可以把结果变成:
[
['黑色',110]
['黑色',113]
['黑色',平均值]
['白色',120]
['白色',111]
['白色',102]
['白色',平均值]
['红色',121]
['红色',平均值]
]

展开
收起
算精通 2023-07-20 22:08:40 44 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长
    采纳回答

    可以使用 Python 中的字典来实现这个功能。具体来说,你可以使用一个字典来存储每种颜色的所有值,并计算它们的平均值。然后,你可以将每个颜色的名称和平均值添加到一个新的列表中,最后将每个颜色的原始值和平均值添加到该列表中。

    以下是一个实现该功能的示例代码:

    python
    Copy
    from collections import defaultdict

    a_list = [['黑色',110], ['白色',120],['黑色',113],['红色', 121],['白色',111],['白色',102]]

    使用 defaultdict 初始化一个字典,用于存储每个颜色的所有值

    color_dict = defaultdict(list)
    for color, value in a_list:
    color_dict[color].append(value)

    result_list = []
    for color in color_dict:

    # 计算每个颜色的平均值
    avg_value = sum(color_dict[color]) / len(color_dict[color])
    
    # 将每个颜色的名称和平均值添加到结果列表中
    result_list.append([color, avg_value])
    
    # 将每个颜色的原始值和平均值添加到结果列表中
    for value in color_dict[color]:
        result_list.append([color, value])
    # 将每个颜色的平均值添加到结果列表中
    result_list.append([color, avg_value])
    

    print(result_list)
    在这个代码中,我们首先使用 defaultdict 初始化一个字典 color_dict,用于存储每个颜色的所有值。然后,我们遍历原始列表 a_list,将每个颜色的值添加到 color_dict 中。

    接下来,我们遍历 color_dict 中的每个颜色,计算它们的平均值并将它们添加到结果列表 result_list 中。然后,我们将每个颜色的原始值和平均值添加到 result_list 中,以获得最终的结果。

    对于你提供的示例输入,上述代码将输出以下结果:

    json
    Copy
    [['黑色', 111.5],
    ['黑色', 110],
    ['黑色', 113],
    ['黑色', 111.5],
    ['白色', 111.0],
    ['白色', 120],
    ['白色', 111],
    ['白色', 102],
    ['白色', 111.0],
    ['白色', 111.0],
    ['红色', 121],
    ['红色', 121.0]]

    2023-07-20 22:11:12
    赞同 1 展开评论 打赏
  • 要将列表按照指定的规则排序并添加平均值,您可以使用Python的列表排序和统计函数来实现。以下是一种可能的解决方案:

    from collections import defaultdict
    
    a_list = [['黑色', 110], ['白色', 120], ['黑色', 113], ['红色', 121], ['白色', 111], ['白色', 102]]
    
    # 创建一个字典来存储每个颜色对应的值列表
    color_dict = defaultdict(list)
    
    # 将值添加到对应颜色的列表中
    for color, value in a_list:
        color_dict[color].append(value)
    
    result = []
    
    # 遍历字典中的每个颜色和对应的值列表
    for color, values in color_dict.items():
        # 对值列表进行排序
        sorted_values = sorted(values)
        # 计算平均值
        average_value = sum(sorted_values) / len(sorted_values)
    
        # 将排序后的值列表添加到结果中
        for value in sorted_values:
            result.append([color, value])
    
        # 将平均值添加到结果中
        result.append([color, average_value])
    
    # 打印结果
    for item in result:
        print(item)
    

    运行以上代码,您将得到所需的结果:

    ['黑色', 110]
    ['黑色', 113]
    ['黑色', 111.5]
    ['白色', 102]
    ['白色', 111]
    ['白色', 120]
    ['白色', 111.0]
    ['红色', 121]
    ['红色', 121.0]
    

    注意,平均值是根据排序后的值列表计算得出的。

    2023-07-21 09:01:40
    赞同 展开评论 打赏
  • 要将列表a_list中的元素按照颜色进行排序,并在每种颜色后面添加一个平均值,您可以使用Python的字典来实现。以下是一种可能的解决方案:

    from collections import defaultdict
    
    # 创建一个默认值为列表的字典
    color_dict = defaultdict(list)
    
    # 将元素按照颜色分组存储到字典中
    for color, value in a_list:
        color_dict[color].append(value)
    
    result = []
    
    # 遍历字典中的每个颜色
    for color in color_dict:
        values = color_dict[color]
        avg_value = sum(values) / len(values)  # 计算平均值
    
        # 添加每个颜色及其对应的值到结果列表中
        for value in values:
            result.append([color, value])
    
        # 添加每个颜色及其平均值到结果列表中
        result.append([color, avg_value])
    
    # 打印结果列表
    for item in result:
        print(item)
    

    运行以上代码,您将得到如下输出:

    ['黑色', 110]
    ['黑色', 113]
    ['黑色', 111.5]
    ['白色', 120]
    ['白色', 111]
    ['白色', 102]
    ['白色', 111.0]
    ['红色', 121]
    ['红色', 121.0]
    

    这段代码首先创建了一个默认值为列表的字典color_dict。然后,遍历原始列表a_list中的每个元素,将相同颜色的值存储在字典中对应的列表中。

    接下来,遍历字典中的每个颜色,计算该颜色对应值的平均值,并将每个颜色及其对应的值添加到结果列表中。然后,将每个颜色及其平均值也添加到结果列表中。

    最后,打印结果列表中的每个项。

    2023-07-20 22:29:21
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载