python基础语法 003-2 数据类型字典

1 字典

1.1 字典的表示

字典:也是存储多个数据的,存储多个数据,不记得第二个存储什么用字典,存储多个数据首推列表;

1.1.1 表示方法:

{'key' : 'value'},用逗号隔开

python 复制代码
#列表表示
my_songs = ['花海', '棉花糖', '起风了','一闪一闪亮晶晶', '青花瓷']
print(my_songs)

print(my_songs[3])#表示喜欢的歌
print(my_songs[4])#表示不喜欢的歌
#列表的缺陷:列表存储多个数据的时候,不知道元素具体表达的含义
#字典能够表示除每个元素具体的意思

#字典的表示方法 {key: value,key1:walue1, key2:walue2},key不能重复,重复后面的值会吧前面的覆盖
#my_songs = ['花海', '棉花糖', '起风了','一闪一闪亮晶晶', '青花瓷']
my_songs = {"favor":"花海", "hated":"棉花糖", "listen_night":"起风了"}


-----结果 -----------------
['花海', '棉花糖', '起风了', '一闪一闪亮晶晶', '青花瓷']
一闪一闪亮晶晶
青花瓷

1.1.2 key是唯一的且不可变的

key用来指定value的内存地址,同样的key会指定同样的地址,所以只能获取一个value

python 复制代码
#字典的key是有要求的,不能重复,c重复的前面会被后面覆盖
my_songs = {"favor":"花海", "favor":"棉花糖", "listen_night" : "起风了"}
print(my_songs["favor"])


----结果-----
棉花糖

1.1.3 key可以的类型

python 复制代码
#字典的key应该是能够hash哈希,不可变的,不能赋值,一般使用字符串,也可以是其他的不可变的类型
my_songs = {[1]:"花海", "favor":"棉花糖", "listen_night" : "起风了"}


--------结果 -----
raceback (most recent call last):
  File "F:\pythonProject1\字典.py", line 18, in <module>
    my_songs = {[1]:"花海", "favor":"棉花糖", "listen_night" : "起风了"}
TypeError: unhashable type: 'list'

1.2 字典操作

1.2.1 长度,len()

python 复制代码
my_songs = {"favor":"花海", "favor":"棉花糖", "listen_night" : "起风了"}
print(len(my_songs))

my_songs = {"favor":"花海", "hated":"棉花糖", "listen_night":"起风了"}
print(len(my_songs))

------结果 ----
2
3

1.2.2 索引和切片

和字符串不一样

python 复制代码
my_songs = {"favor":"花海", "hated":"棉花糖", "listen_night":"起风了"}
#字典的索引 KeyError
#字典是没有索引的同样是没有切片的,通过key来找值
#如果有索引,代表有顺序,列表是有序的,而字典是无序的
#字典在内存中储存是乱序的,随机存

print(my_songs)

print(my_songs[0])#KeyError


-----结果--------------
{'favor': '花海', 'hated': '棉花糖', 'listen_night': '起风了'}
Traceback (most recent call last):
  File "F:\pythonProject1\字典.py", line 30, in <module>
    print(my_songs[0])#KeyError
KeyError: 0

my_songs = {0:"花海", "hated":"棉花糖", "listen_night":"起风了"}
print(my_songs[0]) #这个可以

-----------结果----------------
花海





#indexError:索引超出范围
#ValueError:传入参数错误
#KeyError:字典的key有问题

1.3 可变类型,可以做增删改查

python 复制代码
my_songs = {"favor":"花海", "hated":"棉花糖", "listen_night":"起风了"}
p
#字典可不可以进行修改 =====》 字典时可变类型?
#只能根据key去操作
my_songs["favor"] = "可不可以"
print(my_songs)

#添加:如果key不在原来的字典当中,就是添加
#如果在,就是修改
my_songs["新的key"] = 'value'
print(my_songs)

#删除
my_songs.pop("favor")
print(my_songs)


----结果-----------------
{'favor': '可不可以', 'hated': '棉花糖', 'listen_night': '起风了'}
{'favor': '可不可以', 'hated': '棉花糖', 'listen_night': '起风了', '新的key': 'value'}
{'hated': '棉花糖', 'listen_night': '起风了', '新的key': 'value'}

1.4 字典函数操作

keys():获取所有key

values():获取所有value

items():获取key + value

python 复制代码
my_songs = {'hated': '棉花糖', 'listen_night': '起风了'}
print(my_songs.keys())
print(my_songs.values())
print(my_songs.items()) 



--------结果 -----
dict_keys(['hated', 'listen_night'])
dict_values(['棉花糖', '起风了'])
dict_items([('hated', '棉花糖'), ('listen_night', '起风了')])

1.5 什么时候用字典?什么时候用列表?

可读性强的用字典

需要顺序用列表

python 复制代码
"""
接口自动化测试:
测试用例
1:接口地址,请求方法,请求数据(参数)
数据1:/login,GET,yuez
数据2:/register,POST,kewang
数据3:/user,GET,123
有顺序的数据用列表,外层列表
可读性一一对应,用字典
"""

cases = [
   # [''/login'','GET','yuez'],
    {"url":"/login", "method":"get","date":"yuz"},
    '这是第二行数据',
    '这是第三行数据',
]

cases = [
    '这是第一行数据',
    '这是第二行数据',
    '这是第三行数据',
]

例子:将下列数据

t1 = ("aa", 11)

t2 = ("bb", 22)

t3 = [("cc", 11)]

变为字典格式

python 复制代码
t1 = ("aa", 11)
t2 = ("bb", 22)
t3 = [("cc", 11)]

new_dict = {}
new_dict[t1[0]] = t1[1]
new_dict[t2[0]] = t2[1]
new_dict[t3[0][0]] = t3[0][1]
print(new_dict)


---结果 ------------
{'aa': 11, 'bb': 22, 'cc': 11}
相关推荐
轻口味6 分钟前
命名空间与模块化概述
开发语言·前端·javascript
晓纪同学1 小时前
QT-简单视觉框架代码
开发语言·qt
威桑1 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服1 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb
Java Fans1 小时前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手1 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#
算法小白(真小白)2 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python