字典、集合和序列
list()
转换为列表类型set(value)
,把列表或元组转换为集合tuple()
,转换为元组类型map()
会根据提供的函数对指定序列做映射
09字典
笔记
- 字典是无序的键:值(
key:value
)对集合,键必须是互不相同的(在同一个字典之内) key
不能重复
1.可变类型与不可变类型
- 字典是Python 唯一的一个映射类型,以 "关键字"为索引 ,关键字可以是任意不可变类型,通常用字符串或数值
dic1['user'] = 'root' #修改字典中关键字为user对应的值
-判断一个数据类型X
是不是可变类型的方法:
1.麻烦方法:id(X)
,比较X进行某种操作前后的id值,id相同:X可变;不同:X不可变
2.便捷方法:hash(x)
,不报错:不可变(可被哈希);报错:可变(不可被哈希)
i = 1
print(id(i)) # 140732167000896
i = i + 2
print(id(i)) # 140732167000960
l = [1, 2]
print(id(l)) # 4300825160
l.append('Python')
print(id(l)) # 4300825160
print(hash('Name')) # -9215951442099718823
print(hash((1, 2, 'Python'))) # 823362308207799471
print(hash([1, 2, 'Python']))
# TypeError: unhashable type: 'list'
print(hash({
1, 2, 3}))
# TypeError: unhashable type: 'set'
2.字典的定义
- 字典定义语法为
{元素1, 元素2, ..., 元素n}
其中每一个元素是一个「键值对」-- 键:值key:value
3.创建和访问字典
- 直接按照定义语法打代码,
key
可以是数值、字符串、元组(类型不可变即可)
dic = {
'李宁': '一切皆有可能', '耐克': 'Just do it', '阿迪达斯': 'Impossible is nothing'}
dic1 = {
1: 'one', 2: 'two', 3: 'three'}
dic = {
(1, 2, 3): "Tom", "Age": 12, 3: [3, 5, 7]}
dict()
:创建空的字典,再通过key
把数据放入字典中,一个key
对应一个value
,后面的值会把前面的值冲掉
dic = dict()
dic['a'] = 1
print(dic) # {'a': 1}
dic['a'] = 11
print(dic) # {'a': 11}
dic['b'] = 2
print(dic) #{'a': 11, 'b': 2}
dict(mapping)
通过(键:值)对构建新的字典
dic1 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)])
print(dic1) # {'cherry': 4098, 'apple': 4139, 'peach': 4127}
dic2 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098)))
print(dic2) # {'peach': 4127, 'cherry': 4098, 'apple': 4139}
dict(**kwargs)
通过 key = value构建,这种情况下键只能是字符串类型,并且创建的时候不能加上引号
dic = dict(name='Tom', age=10)
print(dic) # {'name': 'Tom', 'age': 10}
- 通过键,索引字典中的值,取得键不在字典中会报错
KeyError
dic1 = {
1: 'one', 2: 'two', 3: 'three','rice': 35, 'wheat': 101, 'corn': 67}
print(dic1[1]) # one
print(dic1[4]) # KeyError: 4
print(dic1['rice']) # 35
4.字典的内置方法
dict.fromkeys(seq[, value])
用于创建一个新字典,以序列seq
中元素做字典的键,value
为字典所有键对应的初始值
seq = ('name', 'age', 'sex')
dic3 = dict.fromkeys(seq, ('小马', '8', '男'))
print(dic3) #{'name': ('小马', '8', '男'), 'age': ('小马', '8', '男'), 'sex': ('小马', '8', '男')}
dict.keys()
返回一个可迭代对象,可以使用list()
来转换为列表,列表为字典中的所有键dict.values()
返回一个迭代器,可以使用list()
来转换为列表&#