Python字典学习笔记

1. 字典概述与创建

列表、元组、字符串等都可以使用位置来进行索引,因为它是有序的。而字典以键值对方式(key-value)组合起来的数据类型,是无序的。

  • 字典是另一种可变容器模型,且可存储任意类型对象
  • 字典的定义方法是:用{}来表示,按照key:value来表示字典中的元素,其中key是键,value是值,key-value也就是键值对
# 创建空字典
a = {}
type(a)
b = {'a':1}
print(b,type(b))
{'a': 1} <class 'dict'>

字典的特点

  • 键值对,一定共同出现,不能只有一个
  • 不允许同一个键出现两次:创建时如果同一个键被赋值两次,后一个值会被记住
  • key必须是不可变的对象,value则可以是任意对象:数值,字符串,序列,字典,列表,元组,空值,布尔值等
  • 字典是无序的
dic = {'a':}
  File "<ipython-input-3-324ca4a3983c>", line 1
    dic = {'a':}
               ^
SyntaxError: invalid syntax
dic = {'a':1,'a':2}
dic
{'a': 2}
dic = {'a':(1,'a'),'b':True,'c':None,'d':[1,2],'e':1,'f':'f','g':{'k':'sss'}}
print(dic,type(dic))
{'a': (1, 'a'), 'b': True, 'c': None, 'd': [1, 2], 'e': 1, 'f': 'f', 'g': {'k': 'sss'}} <class 'dict'>

dict()函数 → dict()由序列生成一个字典,嵌套序列,可以是list或者tuple

lst1 = [('a','b'),(1,2)]
lst2 = [['c','d'],[1,2]]
lst3 = [('aa','bb'),[1,2]]
lst4 = [['cc','dd'],(1,2)]
print(dict(lst1),type(dict(lst1)))
print(dict(lst2),type(dict(lst2)))
print(dict(lst3),type(dict(lst3)))
print(dict(lst4),type(dict(lst4)))
{'a': 'b', 1: 2} <class 'dict'>
{'c': 'd', 1: 2} <class 'dict'>
{'aa': 'bb', 1: 2} <class 'dict'>
{'cc': 'dd', 1: 2} <class 'dict'>
lst1 = ['a','b','c']
lst2 = [2,3,4,'s','c','i']
a = zip(lst1,lst2)
for i in a:
    print(i)
# 通过zip函数可通过对应的索引将两个列表转为一个成对的元组组合的数据,
# 索引对不上的则自动舍弃,因此一般需要列表长度相同
('a', 2)
('b', 3)
('c', 4)
# 通过zip函数转为字典
lst1 = ['a','b','c']
lst2 = [2,3,4]
dict(zip(lst1,lst2))
{'a': 2, 'b': 3, 'c': 4}

2. 字典的访问

字典常用访问方法

info = {'name':'Jack','age':18}
# 字典访问存在的键
print(info['name'])
print(info['age'])
Jack
18
# 访问不存在的键,这时会报错
info['gender']
---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)

<ipython-input-15-8b50ad688d45> in <module>()
      1 # 访问不存在的键,这时会报错
----> 2 info['gender']


KeyError: 'gender'

get方法访问,该方法的优点就是不会报错,当访问不存在的键时则默认会返回None,当然也可以设置默认值

# 访问存在的键
print(info.get('name'))
# 访问存在的键
print(info.get('gender'))
Jack
None
# 访问存在的键,添加默认值,返回原有的值
print(info.get('name','lily'))
# 访问存在的键,添加默认值,返回指定的值
print(info.get('gender','男'))
Jack
男

3. 字典的增删改查

字典的增

info = {'name':'Jack','age':18}
# 新增一个键值对
info['gender'] = '男'
info
{'age': 18, 'gender': '男', 'name': 'Jack'}

字典的删

  • del dict[key] 删除键值对,再次访问就会报错;del dict 删除整个字典,再次访问报错
  • dict.clear 清空字典,返回空字典
  • dict.pop 字典元素值的弹出,可以用变量接受它,但是原dict对应的会被删除
info = {'name':'Jack','age':18}
del info['name']
info
{'age': 18}
info = {'name':'Jack','age':18}
del info
info
---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

<ipython-input-25-ce814d0fccdf> in <module>()
      1 info = {'name':'Jack','age':18}
      2 del info
----> 3 info


NameError: name 'info' is not defined
info = {'name':'Jack','age':18}
info.clear()
infob
{}
info = {'name':'Jack','age':18}
a = info.pop('name')
print(a)
info
Jack

{'age': 18}

字典更改

info = {'name':'Jack','age':18}
info['name'] = 'Lucy'
info
{'age': 18, 'name': 'Lucy'}

字典的查

info = {'name':'Jack','age':18,'gender':'Man'}
# 获取字典中所有的键,返回的是一个列表
print('获取所有的键:',info.keys()) 
# 获取字典中所有的值,返回的是一个列表
print('获取所有的值:',info.values())
# 获取所有的项,返回的是一个列表,键值为一个元组
print('获取所有的项:',info.items()) 
获取所有的键: dict_keys(['name', 'age', 'gender'])
获取所有的值: dict_values(['Jack', 18, 'Man'])
获取所有的项: dict_items([('name', 'Jack'), ('age', 18), ('gender', 'Man')])
info = {'name':'Jack','age':18,'gender':'Man'}
# 遍历所有的键
i = 1
for key in info.keys():
    print('第{}个键为:{}'.format(i,key))
    i += 1
第1个键为:name
第2个键为:age
第3个键为:gender
info = {'name':'Jack','age':18,'gender':'Man'}
# 遍历所有的值
i = 1
for value in info.values():
    print('第{}个值为:{}'.format(i,value))
    i += 1
第1个值为:Jack
第2个值为:18
第3个值为:Man
info = {'name':'Jack','age':18,'gender':'Man'}
# 遍历所有的键值对
i = 1
for key,value in info.items():
    print('第{}个键为:{}、值为:{}'.format(i,key,value))
    i += 1
第1个键为:name、值为:Jack
第2个键为:age、值为:18
第3个键为:gender、值为:Man

枚举方法

# 使用枚举方法来同时访问索引与值
mylist = ['a','b','c','d']
for i,j in enumerate(mylist):
    print(i,j)
0 a
1 b
2 c
3 d
info = {'name':'Jack','age':18,'gender':'Man'}
# 获取键的索引
for i,j in enumerate(info):
    print(i,j)
0 name
1 age
2 gender

4. 字典的常用操作

判断key是否存在

info = {'name':'Jack','age':18,'gender':'Man'}
print('name' in info)
print('id' not in info)
True
True

字典的合并

info = {'name':'Jack'}
dic = {'age':18,'gender':'Man'}
info.update(dic)
print(info,'\n',dic)
{'name': 'Jack', 'age': 18, 'gender': 'Man'} 
 {'age': 18, 'gender': 'Man'}

获取字典的长度

info = {'name':'Jack','age':18,'gender':'Man'}
len(info)
3

获取最大的key

info = {'name':'Jack','age':18,'gender':'Man'}
max(info)
'name'

获取最小的key

info = {'name':'Jack','age':18,'gender':'Man'}
min(info)
'age'

字典的拷贝

info = {'name':'Jack','age':18,'gender':'Man'}
a = info.copy()
a['age'] = 1
print(info,'\n',a)
{'name': 'Jack', 'age': 18, 'gender': 'Man'} 
 {'name': 'Jack', 'age': 1, 'gender': 'Man'}
原创文章 20 获赞 7 访问量 1270

猜你喜欢

转载自blog.csdn.net/qq_44285092/article/details/106032812