Python-字典,从基础到进阶用法大总结,进来查漏补缺

在这里插入图片描述
B站|公众号:啥都会一点的研究生

hello,我是啥都生,本期将Python中字典涉及的从基础到进阶用法,全部总结归纳,一起看看吧

计算机中的标准数据结构通常称为“映射”。在Python中,这种结构称为“字典”。当有键/值对数据(一个映射到输出的输入)时,使用字典是最方便的

假设有如下数据

name = "CaiXK"
age = 38
height = 163.1415926
hobby = ["rap", "basketball", "python"]
location = (34.228, 26.093)

name = "CaiXK"为例,构成完整键值对name"CaiXK"。有两种构建列表的方式将上述数据进行存储,第一种,直接使用大括号,键与值间用冒号配对,键值对间用逗号隔开

dict1 = {"name" : "CaiXK", "age" : 38, "height" : 163.1415926, "hobby" : ["rap", "basketball", "python"], "location" : (34.228, 26.093)}

print(dict1)

>>> {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python'], 'location': (34.228, 26.093)}

第二种,使用内置方法dict(),注意与第一种方法的区别,键值用等号连接,键值对依然用逗号隔开

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

print(dict1)

>>> {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python'], 'location': (34.228, 26.093)}

此外,使用fromkeys() 函数用于创建新字典,以序列中的元素做字典的键,所有键对应的初始值默认为None,可自定义初始值

keys = ('name', 'age', 'sex')

dict1 = dict.fromkeys(keys)
dict2 = dict.fromkeys(keys, 1)

print(dict1)
print(dict2)

>>> {'name': None, 'age': None, 'sex': None}
>>> {'name': 1, 'age': 1, 'sex': 1}

需特别注意的是,键不允许重复,若使用dict方式创建字典并多次给同一个键赋值,则会触发报错

dict1 = dict(name = "ZhangS", name = "LiS", name = "CaiXK")

print(dict1["name"])

>>> File "script.py", line 5
    dict1 = dict(name = "ZhangS", name = "LiS", name = "CaiXK")
                                  ^
SyntaxError: keyword argument repeated

Exited with error status 1

而使用大括号方式创建,则只保留最后一次写入的键值对数据

dict1 = {"name" : "ZhangS", "name" : "LiS", "name" : "CaiXK"}

print(dict1["name"])

>>> CaiXK

此外,必须保证键是不可变,也就是仅支持数字、字符串、元组

dict1 = {1 : 2, (22, 33) : "44", "55" : 66}

print(dict1)

>>> {1: 2, (22, 33): '44', '55': 66}

字典创建完成后,可以看做N个输入对应N个输出,输入为键,输出为值,且不限定输出类型。字典的取值通过键完成索引,如下所示,注意使用中括号且引号别落下

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

name = dict1["name"]

hobby_1 = dict1["hobby"][0]

print(name, " is good at ", hobby_1)

>>> CaiXK  is good at  rap

如果试图访问取出不存在的键,则会抛出如下错误

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

Girlfriend = dict1["girlfriend"]

print(Girlfriend)

>>> Traceback (most recent call last):
  File "script.py", line 3, in <module>
    Girlfriend = dict1["girlfriend"]
KeyError: 'girlfriend'

Exited with error status 1

而使用get获取键值,若键不存在,默认返回None,也支持自定义返回数据避免错误

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

Girlfriend = dict1.get("girlfriend")

print(Girlfriend)

Girlfriend = dict1.get("girlfriend", "Peter")

print(Girlfriend)

>>> None
>>> Peter

get()类似,若键不存在于字典中,使用setdefault自定义值,默认为None,但不同的是,会将该键值对添加至字典中

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

Girlfriend = dict1.setdefault("girlfriend", "Peter")

print(Girlfriend)
print(dict1)

>>> Peter
>>> {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python'], 'location': (34.228, 26.093), 'girlfriend': 'Peter'}

因为字典是可变对象,支持修改,可以通过如下方式完成键值对的添加

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

dict1["girlfriend"] = "ZhangH" # Han

print(dict1)

>>> {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python'], 'location': (34.228, 26.093), 'girlfriend': 'ZhangH'}

通过索引键并重新赋值完成修改

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

dict1["girlfriend"] = "LiYF" # ?

print(dict1)

>>> {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python'], 'location': (34.228, 26.093), 'girlfriend': 'LiYF'}

使用del删除指定键值对

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

del dict1["location"]

print(dict1)

>>> {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python']}

也可以删除整个字典

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

del dict1

print(dict1)

>>> Traceback (most recent call last):
  File "script.py", line 11, in <module>
    print(dict1)
NameError: name 'dict1' is not defined

Exited with error status 1

使用pop删除指定键值对并返回值

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

location = dict1.pop("location")

print(location, dict1)

>>> (34.228, 26.093) {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python']}

使用popitem随机返回并删除字典中的最后一对键和值

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

data = dict1.popitem()

print(data, dict1)

>>> ('location', (34.228, 26.093)) {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python']}

使用clear清空字典中的全部内容,注意与del不同,该对象仍存在

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

dict1.clear()

print(dict1)

>>> {}

使用copy完成字典的浅拷贝,避免因其可变带来的原始数据改动

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

dict2 = dict1
dict3 = dict1.copy()

dict1.popitem()

print(dict2)
print(dict3)

>>> {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python']}
>>> {'name': 'CaiXK', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python'], 'location': (34.228, 26.093)}

判断键是否存在于字典中使用in

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

if name in dict1:
    print(True)

>>> True

使用update将另一个字典中的键值对更新到本字典中,若键重复,则以另一字典为默认

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))
dict2 = dict(name = "WuYF", sex = "Female")

dict1.update(dict2)

print(dict1)

>>> {'name': 'WuYF', 'age': 38, 'height': 163.1415926, 'hobby': ['rap', 'basketball', 'python'], 'location': (34.228, 26.093), 'sex': 'Female'}

然后说说列表的遍历,第一种,使用items遍历每一个键值对

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

for item in dict1.items():
    print(item)

>>> ('name', 'CaiXK')
('age', 38)
('height', 163.1415926)
('hobby', ['rap', 'basketball', 'python'])
('location', (34.228, 26.093))

第二种,使用keys遍历字典中每个键,或者默认不使用内置方法

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

for key in dict1.keys(): # for key in dict1()
    print(key)

>>> name
age
height
hobby
location

第三种,使用values遍历字典中每个值

dict1 = dict(name = "CaiXK", age = 38, height = 163.1415926, hobby = ["rap", "basketball", "python"], location = (34.228, 26.093))

for value in dict1.values():
    print(value)

>>> CaiXK
38
163.1415926
['rap', 'basketball', 'python']
(34.228, 26.093)

以上就是本期的全部内容,欢迎纠错与补充,整理不易,点赞收藏关注鼓励下吧,一起进步~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 要成为一个Python的大牛,需要通过一系列实战经验来不断进阶。 首先,我们需要从菜鸟开始,学习基本的语法和常用库。掌握Python的基本语法、变量、数据类型、条件语句和循环语句等是必不可少的。此外,还要熟悉常用的Python库,如NumPy、Pandas和Matplotlib等,这些库在数据处理和可视化方面都非常常用。 接下来,我们需要通过实战来巩固所学的知识。可以选择一些小项目来实践,比如编写一个简单的Web应用、爬取网页数据或者创建一个简单的机器学习模型。通过实际应用,可以提升对Python的实际运用能力。 在实战过程中,我们需要积累并解决一些常见的问题。这些问题可能涉及到代码的优化、调试、性能优化等方面。通过解决这些问题,我们可以提升自己的编程能力,并且学会更高效地利用Python来解决实际问题。 另外,为了进一步提升自己的水平,可以参与开源项目或者自己创建项目。通过参与开源项目,可以学习到更多高级的编程技术和实践经验。同时,创建自己的项目有助于锻炼独立思考和解决问题的能力。 除了对Python语言的掌握外,我们还需要了解相关的领域知识。比如,在数据科学领域,需要学习统计学、机器学习和数据挖掘等知识。通过将Python与领域知识相结合,可以在相关领域中发挥更大的作用。 总而言之,成为一个Python的大牛需要不断地实践和学习。通过不断地积累实战经验,掌握并解决常见问题,参与开源项目或者自己创建项目,同时结合相关领域的知识,多角度地深入学习Python。这样的进阶之路需要耐心和毅力,但最终将能够取得令人骄傲的成果。 ### 回答2: Python是一门广泛应用于软件开发和数据分析的编程语言,具有简洁易学、功能强大的特点,因此非常适合初学者入门。然而,要想从菜鸟到大牛,需要不断拓展知识,提升技能。 首先,要全面掌握Python基础知识,包括语法、数据类型、条件语句、循环语句等。可以通过阅读相关书籍、教程、参加培训班等方式进行学习。 其次,理解面向对象编程(OOP)是进阶的关键。Python是一门支持OOP的语言,掌握面向对象的概念和用法可以使代码更加模块化和可重用。可以通过练习编写类和对象,深入理解继承、封装和多态等概念。 另外,掌握Python标准库和第三方库也是提升的必要条件。标准库包含了许多常用的模块和函数,如操作文件、网络编程、并发等。同时,第三方库可以满足更具体的需求,如数据分析(NumPy、Pandas)、机器学习(Scikit-learn、TensorFlow)等。可以通过实践项目和参与开源社区来积累经验和熟悉常用的库。 此外,代码优化和性能调优也是进阶的一环。良好的代码结构、规范的命名和注释可以提高代码的可读性和可维护性。同时,了解性能优化的技巧和工具可以提高程序的执行效率。 最后,实际项目经验是从菜鸟到大牛的关键。通过实践解决真实的问题,遇到的挑战和解决方案都可以让你不断成长。可以自己找项目实践,也可以参与开源项目、参加比赛等方式来积攒经验。 总的来说,进阶的过程需要坚持不懈的学习和实践,并且保持持续学习的动力。不断总结和思考,参与开源社区和技术讨论也可以获得更多的启发和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥都生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值