您的位置:首页 > 汽车 > 时评 > Python世界:将两个列表合成字典并排序任务实践

Python世界:将两个列表合成字典并排序任务实践

2025/1/7 9:24:54 来源:https://blog.csdn.net/qq_17256689/article/details/142264205  浏览:    关键词:Python世界:将两个列表合成字典并排序任务实践

Python世界:将两个列表合成字典并排序任务实践

    • 任务背景
    • 代码实现
      • 人工编码
      • Copilot AI 编码
        • 一行代码实现
        • 多行代码实现
      • 问题进阶
    • 本文小结

任务背景

任务来源于极客时间专栏中,《Python核心技术与实战》第4章字典、集合,你真的了解吗?课后问题:

给定下面两个列表attributes和values,要求针对values中每一组子列表value,输出其和attributes中的键对应后的字典,最后返回字典组成的列表。

attributes = ['name', 'dob', 'gender']
values = [['jason', '2000-01-01', 'male'],  ['mike', '1999-01-01', 'male'], ['nancy', '2001-02-01', 'female'] ] # expected output: [{'name': 'jason', 'dob': '2000-01-01', 'gender': 'male'},  {'name': 'mike', 'dob': '1999-01-01', 'gender': 'male'},  {'name': 'nancy', 'dob': '2001-02-01', 'gender': 'female'}] 

你能分别用一行和多行条件循环语句,来实现这个功能吗?

代码实现

人工编码

自己尝试了实现下:

attributes = ['name', 'dob', 'gender']
values = [  ['jason', '2000-01-01', 'male'], ['mike', '1999-01-01', 'male'],['nancy', '2001-02-01', 'female']]# 生成字典键值对,多重循环
dict_list = [] # 列表
for i, val in enumerate(values):dict_name = {} # 字典for j, att in enumerate(attributes):dict_name[att] = val[j] # 增加键值对dict_list.append(dict_name)
print(dict_list)

但是对一行代码解决该问题,还有点摸不着头脑。

于是,我将问题原封不动,问了AI Copilot,它给了我很好的答案:

Copilot AI 编码

当然可以!我们可以分别用一行和多行的条件循环语句来实现这个功能。

一行代码实现
result = [dict(zip(attributes, value)) for value in values]
多行代码实现
result = []
for value in values:item = {}for i in range(len(attributes)):item[attributes[i]] = value[i]result.append(item)

这两种方法都会生成你期望的输出:

[{'name': 'jason', 'dob': '2000-01-01', 'gender': 'male'}, {'name': 'mike', 'dob': '1999-01-01', 'gender': 'male'}, {'name': 'nancy', 'dob': '2001-02-01', 'gender': 'female'}]

希望这对你有帮助!如果你有其他问题,随时告诉我。 😊

问题进阶

任务依然来自于该专栏,[10 简约不简单的匿名函数](https://learn.lianglianglee.com/专栏/Python核心技术与实战/10 简约不简单的匿名函数.md):

第一问:如果让你对一个字典,根据值进行由高到底的排序,该怎么做呢?以下面这段代码为例,你可以思考一下。

d = {'mike': 10, 'lucy': 2, 'ben': 30}

参考示例如下:

d = {'mike': 10, 'lucy': 2, 'ben': 30}# 根据字典值的升序排序
d_sorted_by_value = sorted(d.items(), key=lambda x: x[1])  # 若元素为数值,在x[1]前添加负号也可,降序排序
print(d_sorted_by_value)# 根据字典值的降序排序
d_sorted_by_value = sorted(d.items(), key=lambda x: x[1], reverse=True) # 默认按升序排,reverse入参默认是False,如果要降序,则reverse=True
print(d_sorted_by_value)# 根据字典键的升序排序
d_sorted_by_value = sorted(d.items(), key=lambda x: x[0])
print(d_sorted_by_value)# 根据字典键的降序排序
d_sorted_by_value = sorted(d.items(), key=lambda x: x[0], reverse=True)
print(d_sorted_by_value)

本文小结

该任务练习了字典的组合及排序,利用两份列表生成了字典键值对,同时对已生成的字典按照键、值分别进行升序、降序排列尝试,并验证了效果。

参考资料

  1. zip功能解释:将两个列表组成元组对
  2. 如何按值对 Python 字典进行排序
  3. python 按照字典value值进行降序排序

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com