python学习6-字典

简介: python学习6-字典

一、字典的定义 使用{}定义

1、python内置的数据结构之一,与列表一样,是一个可变序列(可变序列可以进行增删改操作,比如列表、字典 不可变序列不可以进行增删改操作,比如string字符串、整数)

2、以键值对的方式存储数据,字典是一个无序的序列

二、字典的实现原理

字典的实现原理与查字典类似,python中的字典是根据key查找value所在的位置(哈希函数)

三、字典的创建

1、使用花括号{}

scores={'张三':100,'里斯':99,'往往':88}

2、使用内置函数dict()

star=dict(name='张杰',age=40) #{'name': '张杰', 'age': 40}

3、空字典

d={}  #{}

四、字典的常用操作

1、字典元素的获取 []取值和get()取值

  • []如果字典中不存在指定的Key,抛出keyError异常
print(scores['张三'])   #100
#print(scores['张杰'])  #KeyError: '张杰'
  • get()方法取值,如果字典中不存在指定的Key,并不会抛出KeyError异常,而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回
print(scores.get('张三')) #100
print(scores.get('张杰'))  #None
print(scores.get('张杰',99))  #99

2、key的判断 in/not in 指定的key在字典中是否存在

print('张三' in scores) #True
print('张杰' in scores)  #False

3、字典元素的删除(del clear())

del scores['张三'] #{'里斯': 99, '往往': 88}  del 删除指定的Key-value对
scores.clear()  #{} 请空字典的元素

4、字典元素的新增

scores['陈留']=98  #{'里斯': 99, '往往': 88, '陈留': 98}

5、字典元素的修改

scores['陈留']=100 #{'里斯': 99, '往往': 88, '陈留': 100}

6、获取字典视图的三个方法 keys() values() items()

  • keys() 获取字典中所有key
keys=scores.keys()  #dict_keys(['里斯', '往往', '陈留'])
print(type(keys))  #<class 'dict_keys'>
print(list(keys))  #['里斯', '往往', '陈留']  将所有的key组成的视图转成列表
  • values() 获取字典中所有value
values=scores.values()  #dict_values([99, 88, 100])
print(type(values))   #<class 'dict_values'>
print(list(values))   #[99, 88, 100]
  • items() 获取字典中所有key、value对
items=scores.items()  #dict_items([('里斯', 99), ('往往', 88), ('陈留', 100)])
print(type(items))    #<class 'dict_items'>
print(list(items))    #[('里斯', 99), ('往往', 88), ('陈留', 100)] 转换之后的列表元素是由元组组成的

7、字典元素的遍历

for item in scores:    #item指的是字典元素的键
    print(item,scores[item],scores.get(item))   #后面两种方法都是获取字典元素的值

五、字典的特点

  • 1、字典中的所有元素都是一个Key-value对,key不允许重复,value可以重复
  • 2、字典中的元素是无序的
  • 3、字典中的key必须是不可变对象(比如字符串和整数,不可以是列表,变量)
  • 4、字典也可以根据需要动态的伸缩
  • 5、字典会浪费较大的内存,是一种使用空间换时间的数据结构

六、字典生成式

内置函数zip() 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表,会根据少的那个决定

items=['fruits','books','others']
prices=[88,23,43,77]
d={item.upper():price for item,price in zip(items,prices)} #{'FRUITS': 88, 'BOOKS': 23, 'OTHERS': 43}
相关文章
|
3月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
121 61
|
3月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
156 3
|
2月前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
2月前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
1月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
41 2
|
2月前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
2月前
|
存储 程序员 Python
Python学习的自我理解和想法(2)
今日学习Python第二天,重点掌握字符串操作。内容涵盖字符串介绍、切片、长度统计、子串计数、大小写转换及查找位置等。通过B站黑马程序员课程跟随老师实践,非原创代码,旨在巩固基础知识与技能。
|
2月前
|
程序员 Python
Python学习的自我理解和想法(3)
这是学习Python第三天的内容总结,主要围绕字符串操作展开,包括字符串的提取、分割、合并、替换、判断、编码及格式化输出等,通过B站黑马程序员课程跟随老师实践,非原创代码。
|
2月前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。

热门文章

最新文章