字典的学习笔记

news/2024/12/29 0:04:40/

  • 列表  []     单身
  • 什么是字典  {}  二人世界

python内置的数据结构之一,与列表一样是一个可变序列(可以增删改操作的)
以键值对的方式存储数据,字典是一个无序的序列  -> hash(key)  通过哈希函数来计算存储位置,key一定是不可变的
字典的创建
使用花括号:  score={'张三':100,'李四':98,'王五':55}
第二种创建方式:使用内置函数   dict()
 


print('使用花括号创建')
score = {'张三': 100, '李四': 98, '王五': 55}
print(score, id(score))
print(type(score))
print('第二种创建方式:使用内置函数')
student = dict(name='liu', age=34)
print(student)
'''空字典'''
dit = {}
print(dit, type(dit))print('=========获取字典中的值=======')
print('使用花括号创建')
score = {'张三': 100, '李四': 98, '王五': 55}print(score['张三'])
# print(score['张1']) #如果查找的键不存在 会报错,KeyError: '张1'
print(score.get('张三'))
print(score.get('张1'))  # None  ,如果查找的键不存在
print(score.get('张1', 99))  # 如果查找的键张1不存在,给返回一个默认值print('=======key的判断========')
print('张三' in score)
print('张三' not in score)del score['张三']  # 删除指定的key-value对
print(score, id(score))
# score.clear()
print(score, id(score))
score['程力'] = 93
print(score)
score['程力'] = 95
print(score)print('======获取所有的key========')
score = {'张三': 100, '李四': 98, '王五': 55}
keys = score.keys()
print(keys)  # dict_keys(['张三', '李四', '王五'])
print(type(keys))  # <class 'dict_keys'>
print(list(keys))  # ['张三', '李四', '王五'] 将所有建组成的视图转成列表print('======获取所有的value========')
values = score.values()
print(values)  # dict_values([100, 98, 55])
print(type(values))  # <class 'dict_values'>
print(list(values))print('======获取所有的key-value对========')
items = score.items()
print(items)  # dict_items([('张三', 100), ('李四', 98), ('王五', 55)]) ,转换之后的元素由元组组成-》 元组()print('字典元素的遍历')
for i in score:print(i)  # 输出所有的列表中所有的键 keyprint(score[i], score.get(i))  # 获取键对应的值
print('字典元素的key不允许重复')
d = {'name': '张三', 'name': '李四'}  # key不允许重复,一旦重复出现值覆盖的情况
print(d)  # {'name': '李四'}d = {'name': '张三', 'nick_name': '张三'}
print(d)lst = [1, 2, 3, 4]
lst.insert(1, 100)
print(lst)# d = {lst: 100}
# print(d)  # 可变对象不可以作为key  TypeError: unhashable type: 'list'print('====================')items = ['Fruits', 'books', 'Others']
prices = [85, 23, 52]
d = {i: prices for i, prices in zip(items, prices)}
print(d)items = ['Fruits', 'books', 'Others']
prices = [85, 23, 52,30,40] #更长5个元素,但是只有前3个元素有效
d = {i: prices for i, prices in zip(items, prices)}#以元素少的那个列表来生成
print(d)

lst = ['张三', '李四', '王五']
score = [12, 23, 34, 45, 56]
item = zip(lst, score)
print(item)  # <zip object at 0x000001A9FAC29408>
print('=================')
print(list(item))  # [('张三', 12), ('李四', 23), ('王五', 34)]lst = ['Fruits', 'Books', 'Carrit']
dit = {i.upper(): score for i, score in zip(lst, score)}
print(type(dit)) #<class 'dict'>
print(dit)    #{'FRUITS': 12, 'BOOKS': 23, 'CARRIT': 34}

下面为扩展阅读:

1. 直接创建空字典

dic = {}
print(type(dic))
# 输出结果:<class 'dict'>

2. 直接赋值创建字典

dic = {'name': 'Jack', 'age': 18, 'height': 180}
print(dic)
# 输出结果:{'name': 'Jack', 'age': 18, 'height': 180}

3. 通过关键字dict和关键字参数创建

dic = dict(name='Jack', age=18, height=180)
print(dic)
# 输出结果:{'name': 'Jack', 'age': 18, 'height': 180}

实例:

       •输出一个类似{ i : i*i }的字典

dic = dict()
for i in range(1, 5):dic[i] = i * i
print(dic)
# 输出结果:{1: 1, 2: 4, 3: 9, 4: 16}

4. 通过关键字dict和二元组列表创建

lis = [('name', 'Jack'), ('age', 18), ('height', 180)]
dic = dict(lis)
print(dic)
# 输出结果:{'name': 'Jack', 'age': 18, 'height': 180}

5. 通过关键字dict和zip创建

dic = dict(zip('abc', [1, 2, 3]))
print(dic)
# 输出结果:{'a': 1, 'b': 2, 'c': 3}

 6. 通过字典推导式创建

dic = {i: i ** 2 for i in range(1, 5)}
print(dic)
# 输出结果:{1: 1, 2: 4, 3: 9, 4: 16}

 7. 通过dict.fromkeys()创建

注意:通常用来初始化字典, 设置value的默认值

dic = dict.fromkeys(range(4), 'x')
print(dic)
# 输出结果:{0: 'x', 1: 'x', 2: 'x', 3: 'x'}


参考链接:https://blog.csdn.net/qq_45261963/article/details/108936881


http://www.ppmy.cn/news/241355.html

相关文章

Threejs 快速入门

最小环境 首先&#xff0c;在正式学习Threejs前&#xff0c;有几个概念需要说明的。Threejs在底层其实还是调用html5中的canvas api来实现绘图的。但和我们一般绘制2D图像不同&#xff0c;Threejs在底层使用的是canvas的webgl context来实现3D绘图。webgl context本身更多是直…

Cookie和Session原理详解

目录 前言 Cookie Session 会话机制 Cookie和Session的区别 Servlet中对Session和Cookie的封装 代码实例&#xff1a;实现用户登录 约定前后端交互的接口 前端页面&#xff1a; 后端实现 login index 总结 前言 在web的发展史中&#xff0c;我们知道浏览器和服务…

小程序自动化测试

背景 近期团队打算做一个小程序自动化测试的工具&#xff0c;期望能够做到业务人员操作一遍小程序后&#xff0c;自动还原之前的操作路径&#xff0c;并且捕获操作过程中发生的异常&#xff0c;以此来判断这次发布是否会影响小程序的基础功能。 上述描述看似简单&#xff0c;…

读财报丨Q1保费环比增长33.4%,慧择增长源泉来自于何处?

一季度我国经济表现开局良好&#xff0c;保险行业增长态势明朗。从财报来看&#xff0c;中国人寿、中国平安、中国人保、新华保险、中国太保等大型上市险企Q1净利润纷纷超预期&#xff0c;随着巨头业绩转暖&#xff0c;保险中介行业也迎来了发展好时机。 近日&#xff0c;国内…

centos7安装jdk8

准备&#xff1a;centos7环境&#xff0c;并且能链接网络配置好yum源 打开终端&#xff0c;并以root用户身份登录或使用sudo权限。 1、在终端中运行以下命令&#xff0c;以确保系统是最新的&#xff1a; yum update2、使用以下命令安装JDK 1.8软件包&#xff1a; yum instal…

Unicode编码问题 如:\u529e\u7406\u9996\u6c7d\u52a0\u6cb9

python 遇到\u529e\u7406\u9996\u6c7d\u52a0\u6cb9解决方法&#xff1a; a "\u529e\u7406\u9996\u6c7d\u52a0"b a.decode("unicode-escape")print(b) 转载于:https://www.cnblogs.com/lilinpging/p/8440533.html

数组降维

写一个函数&#xff0c;打印数组内的内容&#xff0c;代码为&#xff1a; #include<stdio.h>void show_arr(int arr[], int num) {int i 0;for (i 0; i < num; i){printf("%d ", arr[i]);}printf("\n"); } int main() {int arr[] { 1,2,3,4,5…

洛谷P5638

不能排序。这里采用前缀和 #include<bits/stdc.h> using namespace std; int main(){long n,k;cin>>n>>k;vector<long long>arr(n-1);for(int i0;i<n-1;i){cin>>arr[i];if(i) arr[i]arr[i-1]; //计算前缀和}long long ansarr[n-2];if(k){for…