温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python列表、字典、循环、判断举例分析

发布时间:2021-11-25 11:44:23 来源:亿速云 阅读:143 作者:iii 栏目:互联网科技

本篇内容主要讲解“python列表、字典、循环、判断举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python列表、字典、循环、判断举例分析”吧!

练习案例

下面通过一个简化的虚拟案例做一次深入学习python小练习,有某果园销售数据如下:

sell_list = [
    {'客户': '张三', '种类': '苹果','数量':100},
    {'客户': '李四', '种类': '苹果','数量':200},
    {'客户': '李四', '种类': '香梨','数量':200},
    {'客户': '李四', '种类': '香梨','数量':300},
    {'客户': '张三', '种类': '苹果','数量':100},
    {'客户': '王五', '种类': '香蕉','数量':500},
    {'客户': '王五', '种类': '香蕉','数量':150},
    {'客户': '王五', '种类': '香蕉','数量':150},
    {'客户': '王五', '种类': '苹果','数量':500},
    {'客户': '赵六', '种类': '葡萄','数量':300},
    {'客户': '李四', '种类': '葡萄','数量':300},
    {'客户': '赵六', '种类': '苹果','数量':300},
]

客户希望对数据进行整理,期待得到的数据集格式类似如下这样:

result_list = [
    ['张三', {'苹果': 300, '香蕉': 200, }],
    ['李四', {'苹果': 100, '香蕉': 200, }],
    ['王五', {'苹果': 100, '香蕉': 200, }],
]

需求分析

客户原始数据池是列表,列表元素是客户、果名、数量。现在的需求是对列表元素进行汇总,得出客户、果名、数量的汇总表。

首先遍历原始数据池,判断客户名

  • 若在数据集中客户名不存在,则数据集中添加客户名,同时将果名和数量以字典格式加入数据集。

  • 若在数据集中客户名存在,则判断果名

    • 若在数据集中果名存在,则将数量累加。

    • 若在数据集中果名不存在,则添加果名和数量。

通过以上分析有个大致的框架,通过2层嵌套循环加判断来编写代码。

具体代码

我设想的代码有2种方案:

  • 二层循环嵌套if的列表实现方式,优点是较省内存,缺点是速度略慢:

result_list = []
for i in sell_list:
    for j in result_list:
        if j[0] == i['客户']:
            if i['种类'] not in j[1]:
                j[1][i['种类']] = i['数量']
            else:
                j[1][i['种类']] = j[1][i['种类']] + i['数量']
            break
    else:
        result_list.append([i['客户'], {i['种类']: i['数量'], }])

for i in result_list:
    print(i)

out:
['张三', {'苹果': 200}]
['李四', {'苹果': 200, '香梨': 500, '葡萄': 300}]
['王五', {'香蕉': 800, '苹果': 500}]
['赵六', {'葡萄': 300, '苹果': 300}]

上述代码有一个需要特别注意的地方,循环体内break会跳过整个循环体(含循环体的else部分)。这一点很多教材都没有讲得很透彻。

  • 单层循环嵌套if的字段实现方式,优点是速度较快,缺点是较费内存:

result_dict = {}
for i in sell_list:
    if i['客户'] in result_dict:
        if i['种类'] not in result_dict[i['客户']]:
            result_dict[i['客户']][i['种类']] = i['数量']
        else:
            result_dict[i['客户']][i['种类']] += i['数量']
    else:
        result_dict[i['客户']] = {i['种类']: i['数量']}

for i, j in result_dict.items():
    print(i, j)

out:
张三 {'苹果': 200}
李四 {'苹果': 200, '香梨': 500, '葡萄': 300}
王五 {'香蕉': 800, '苹果': 500}
赵六 {'葡萄': 300, '苹果': 300}

在字典实现方式中看起来是比列表实现方式少了一层循环,实质上这个循环的目的在“if i['种类'] not in result_dict[i['客户']]:”这个部分已经实现了,在容器中找成员,字典是速度最快同时也是最费内存的方式。

到此,相信大家对“python列表、字典、循环、判断举例分析”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI