Python字典

一、字典表

关于字典:一个可以存储具有一系列映射关系的数据结构即为字典表。字典是Python中的一种无序、可变、有键的数据结构。它是一个键-值对的集合,每个键都唯一且不可变,与每个键关联的值可以是任何数据类型(包括整数、字符串、列表、甚至其他字典)。字典使用大括号 {} 来创建,每个键值对用冒号 : 分隔,键和值之间用逗号 , 分隔。

字典表支持的数据类型:

1
2
3
4
5
6
7
name='正正'                 #字符串str
age=18                      #整数Int
height=1.74                 #浮点型float
is_yes=True                 #布尔bool
pets=['狗','猫','鱼']       #列表list
work_cities=('北京','上海') #元组Tuple
teacher={'姓名':'正正',}    #字典Dict

 

1
2
3
4
5
6
7
8
9
dict_Data={
    '学校':'万门大学',    #字符串
    '创建于':2012,       #整数
    '课程':['Python基础','Python Django','Python爬虫'], #列表
    '部门':['策划部','市场部','人力资源'], #元组
    '老师':{'Python基础':'正正','Django':'宁夫'}
}
print(dict_Data)
print(type(dict_Data))

Dict的2个不准:(1)不准改变(KEY)(2)键(KEY)不允许重复

Dict的4个支持:(1)增加键(KEY)和值(Value)(2)删除键(KEY)和值(Value)(3)基于键(KEY)改变值(Value)(4)基于键(KEY)查询值(Value)

Dict的2个注意:(1)只能使用不可变类型作为键(2)通常不使用数字(int/float)作为键

二、字典表声明

方法一:空值声明

1
2
dict_1=dict()
print(dict_1)

方法二:空值创建

1
2
dict_2={}    #推荐
print(dict_2)

 方法三:非空值创建

1
2
3
4
5
6
dict_3={'姓名':'mike','年龄':20}
dict_4=dict({'姓名':'mike','年龄':20})
dict_5=dict(姓名='mike',年龄=20)
print(dict_3)
print(dict_4)
print(dict_5)

按照key:value的格式可以建立多个键值对(items)的字典表,一个键和一个值叫键值对,在Python里这个叫一个item,全部字典表里的键值对那就是items。

字典表的语法规则:

1
2
dict_3={'姓名':'mike','年龄':20,'城市':'北京'}
              键值之间 冒号:分割   键值对(item)之间的分割使用逗号

 字典表中加入元组或者列表

1
2
3
4
dict_3={'姓名':'mike','年龄':20,'城市':'北京'}
dict_4={'姓名':('mike','Tim'),'城市':['北京','上海']}
print(dict_4['姓名'])
print(dict_4['城市'])
 输出:
('mike', 'Tim')
['北京', '上海']
注意列表、元组[]、()外,不要加引号否则会转成字符串

 三、字典表基本操作

   3.1、增加字典表的值

1
2
3
4
info={'姓名':'张三','年龄':20,'性别':'男'}
# 增加数据
info['城市']='上海' #字典名[键]=添加的值
print(info['城市']) 

   如果键值不存在,则为增加数据;如果键值存在,则为修改数据

 3.2、修改字典表数据的值

1
2
3
4
info={'姓名':'张三','年龄':20,'性别':'男'}
# 修改数据
info['年龄']=29     #字典名[键]=修改的值
print(info['年龄'])

   3.3、查询获取数据的值

1
2
3
4
info={'姓名':'张三','年龄':20,'性别':'男'}
# 查询数据
print(info['姓名'])
print(info.get('姓名'))

   3.4、删除字典表中的值,清空字典

1
2
3
4
5
6
info={'姓名':'张三','年龄':20,'性别':'男'}
# 删除数据
del info['性别']
info.pop('性别')
info.pop()     #会默认从尾开始删除
# 清空字典 <br>info.clear()

   3.5、字典表长度

1
2
3
info={'姓名':'张三','年龄':20,'性别':'男'}
# 字典表长度
print(len(info))

   3.6、字典表数据类型

1
2
3
info={'姓名':'张三','年龄':20,'性别':'男'}
# 字典表类型
print(type(info))

 3.7、基于列表创建字典

1
2
3
keys=['姓名','年龄','祖籍','身高']
new_dict=dict.fromkeys(keys)  #可以设置值,否则默认为None
print(new_dict)       #输出为{'姓名': None, '年龄': None, '祖籍': None, '身高': None}

  3.8、基于键查询包含关系

1
2
dict_1={'姓名': None, '年龄': None, '祖籍': None, '身高': None}
print('年龄' in new_dict)

  3.9、返回字典里的键值对

1
2
3
info={'姓名': '张三', '年龄': 20, '性别': '男', '城市': '上海'}
for k,v in info.items():
    print(k,v)

  在for循环使用,字典.items()返回一个键key,值value的可迭代对象

 3.10、返回字典里的键、值

1
2
3
info={'姓名': '张三', '年龄': 20, '性别': '男', '城市': '上海'}
print(info.keys())
print(info.values())

  字典.keys() 返回当前字典包含所有键的可迭代对象,类似items

    字典.values()返回当前字典包含所有值的可迭代对象,类似items

    3.11 字典的合并

1
2
3
4
dict_1={'name':'mike','age':'28'}
dict_2={'name':'nico','age':'36','height':'1.72'}
dict_1.update(dict_2)
print(dict_1)

输出:{'name': 'nico', 'age': '36', 'height': '1.72'}

遇到重复key,更新key值,遇到不存在直接增加

 3.12 查询键key不存在则添加

1
2
3
4
5
6
dict_1={'Name':'zk','age':29,'sex':'male'}
print(dict_1)
dict_1.setdefault('job','development')
print(dict_1)
dict_1.setdefault('Name','zk')
print(dict_1)

输出:

{'Name': 'zk', 'age': 29, 'sex': 'male'}

{'Name': 'zk', 'age': 29, 'sex': 'male', 'job': 'development'}

{'Name': 'zk', 'age': 29, 'sex': 'male', 'job': 'development'}

如果Name存在,则不作为,如果job不存在,则直接添加job和默认值

    3.13 综合实例

1
2
3
4
5
6
7
8
9
10
salary={
    '一月':20000,
    '二月':30000,
    '三月':40000
}
total_salary=0
for month,salary_month in salary.items():
    total_salary=total_salary+int(salary_month)
    print(f"{month}的工资是:{salary_month}")
print(total_salary)

输出:

一月的工资是:20000
二月的工资是:30000
三月的工资是:40000
90000

     3.14 数据的组成,字典和列表的结合  

1
2
3
4
5
6
7
8
9
10
#用列表和字典搭建一个简单的数据结构
employee_1={'姓名':'张三','年龄':20,'性别':'男','工资':10000}
employee_2={'姓名':'李四','年龄':21,'性别':'男','工资':8000}
employee_3={'姓名':'王五','年龄':22,'性别':'男','工资':9000}
 
HR_data=[employee_1,employee_2,employee_3]
print(HR_data)
for employee_data in HR_data:
    if employee_data['工资']>=9000:
        print(employee_data['姓名'])  
posted @   leagueandlegends  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-04-08 SpringBoot(八)----SpringBoot配置日志文件
2020-04-08 SpringBoot(七)-----查看配置报告
点击右上角即可分享
微信分享提示