字典 dict
字典是能够精准储存信息的数据类型
'''形式是用花括号括起来的多个K:V键值对。键值对之间用逗号隔开
K;V键值对里的V是指任意类型的真实数据,K是对V的描述性信息,一般是字符串
'''
例如:info = { 'user_name':'oliver', 'age':23, 'hobby':'games', 'job':'student'}
'''其中user—name、age、hobby、job是K键,而oliver、23、games、 student是V的真实数据'''
附:词典内部的元素是无序的,所以无法进行索引取值。我们想访问词典里的信息的时候可以通过K键进行访问。例:name_info = info['age']
info = {'user_name':'oliver', 'age': 23, 'hobby': 'game', 'job': 'student'} name_info = info['age'] print(name_info)
以上代码就是访问列表info里的K键为'age'的数据,运行结果如下图
字典与列表多层嵌套的解决方式
问题如下:请在以下代码中取出睢阳区
data = {
'name': 'oliver',
'age': 18,
'hobby': 'games',
'add': {'河南':
{'郑州': '金水',
'开封': '中牟',
'商丘': [
'睢阳区',
'梁园区'
]
},
'湖北': '武汉'}
}
解释:乍一看这个代码符号很多,有列表类数据,也有字典类数据。接下来我们先来逐层拆解
dict1 = data['add'] # 取键add对应的值{'河南': {'郑州': '金水', '开封': '中牟', '商丘': ['睢阳区', '梁园区'}, '湖北': '武汉'}
dict2 = dict1['河南'] # 索键河南对应的值 {'郑州': '金水', '开封': '中牟', '商丘': ['睢阳区', '梁园区']}
dict3 = dict2['商丘'] # 取键商丘对应的值['睢阳区', '梁园区']
add_name = dict3[0] # 索引取值'睢阳区'
方式一:我们可以从外向内逐级拆解。
- 第一步观察data这个大的字典内有4个K:V键值对元素:获取add的数据赋给dict1
- 然后我们观察这个dict1里有两个键值对元素:获取河南的数据赋值给dict2
- 然后观察dict2里有三个键值对元素,获取商丘的数据赋值给dict3
- 最后dict4是一个列表,有两个元素,索引取值睢阳区赋值给add_name,这样输出最后的add_name就可以得到想要的‘睢阳区’
上述访问“睢阳区”的步骤太繁琐了,可以整合以下上述步骤的一系列操作
方式二:直接采取多重访问和索引取值的方式
add_name = data['add']['河南']['商丘'][0] # 从前往后依次访问取值
# 依次是访问data(字典)里的add(字典)的河南(字典)的商丘(列表)的睢阳区
也可以得到相同的运行结果
不常用数据类型
集合 set
这种类型的数据功能单一,主要被用于去重和关系运算
具体形式:
1. 用花括号括起来
2. 内部可以存放多个任意类型元素
3. 并且元素之间用逗号分隔开
4. 与字典不同的是其内部元素不是K:V键值对
例:set_name = {1, 2, 'ok', 3.33}
附与字典类型数据相似,当花括号里为空时,默认为是字典类型数据
元组 tuple
元组与列表几乎一致,只不过形式的外部括号列表是中括号,元组是小括号。而且元组内的元素不可以更改。
具体形式:
1. 小括号括起来
2. 内部可储存多个任意类型元素
3. 元素之间用逗号隔开
例:t = (1,2,3,4.5,'kk')
附:元组内元素不可更改的解释
先不对元祖内数据进行更改,代码:
t1 = (11, 22, 33) # 定义一个元组t1
print(t1) # 输出该元组
运行结果:
然后对元组内数据进行更改,代码: ```python t1 = (11, 22, 33) # 定义一个元组t1 t1[1] = 117 # 对元祖内的第二个数据进行更改 print(t1) # 输出该元组 ``` 运行结果:更改信息以后代码不能运行了,并且报错信息为“'tuple' object does not support item assignment”,意为元组项目内容不支持元素更改。
布尔值
- 布尔值只有 True 和 False 两种状态
- 用来描述事物是否可行、对错的,主要用于逻辑判断
- 所有的数据在python中进行逻辑判断是都会被转换成布尔值
0 None 空列表、空字符串、空字典……默认布尔值都是False
其余情况都是True
涉及布尔值的变量名命名一般用is开头
例:is_right = True