python字典模块笔记速查

python字典

字典存储一系列的键值对:key:value

  • Python中用{}表示字典,可以使用{}创建一个字典
  • 字典中的key和value之间用冒号:分割,元素之间用逗号,分割。
  • 字典的key只能为数字、字符串、元组,大多数情况使用字符串作为key
  • value的类型没有限制
# 创建空字典
a = {}
print("type(a) = ", type(a)) # type(a) = <class 'dict'>
print("a = ", a) # a = {}
# 创建字典
a = {'a':123, 'b':456, 0:789}
print("a = ", a) # a = {'a': 123, 'b': 456, 0: 789}

利用dict创建字典

a = dict(key1=value1,key2=value2,key3=value3)

  • 此时key只能是字符串
# 创建了一个空字典
a = dict()
print("type(a) = ", type(a)) # type(a) = <class 'dict'>
print("a = ", a) # a = {}

# 利用dict创建字典,此时key只能是字符串,不能是数字
a = dict(a=123, b=456, c=789)
print("a = ", a) # a = {'a': 123, 'b': 456, 'c': 789}

a = dict([[key1, value1],[key2, value2],[key3, value3]])

  • 可以传入一个列表或者元组,每个元素也是一个包含两个元素的列表或者元组
  • 则此时可以按照第一个元素作为key,第二个元素作为value
a = dict([['a', 123], ['b', 456], ['c', 789]])
print("type(a) = ", type(a)) # type(a) = <class 'dict'>
print("a = ", a) #  a = {'a': 123, 'b': 456, 'c': 789}

a = dict([('a', 123), ('b', 456), ('c', 789)])
print("type(a) = ", type(a)) # type(a) = <class 'dict'>
print("a = ", a) #  a = {'a': 123, 'b': 456, 'c': 789}

zip(sequence1, sequence2, ...)

  • 把多个序列相同下标的元素组装成元组,结果是一个可迭代对象
  • 结果可以转换成list,但是首次转换后迭代器就为空
keys = ['a', 'b', 'c']
value = [123, 456, 789]
zipped = zip(keys, value)
print(zipped) # <zip object at 0x7f2b354a9f40>
print(list(zipped)) # [('a', 123), ('b', 456), ('c', 789)]
print(list(zipped)) # []

keys = ['a', 'b', 'c']
value1 = [123, 456, 789]
value2 = [321, 654, 987, 1000]
zipped = list(zip(keys, value1, value2))
print(zipped) # [('a', 123, 321), ('b', 456, 654), ('c', 789, 987)]

keys = ['a', 'b', 'c']
value = [123, 456, 789]
a = dict(list(zip(keys, value)))
print("a = ", a) # a = {'a': 123, 'b': 456, 'c': 789}

访问字典

Python的字典通过key来获取value,把key看做下标即可
a[x]:a为dict、x为中的一个key,必须存在否则会报错

keys = ['a', 'b', 'c']
value = [123, 456, 789]
a = dict(list(zip(keys, value)))
print("a = ", a) # a = {'a': 123, 'b': 456, 'c': 789}
print(a['a'], a['b']) # 123 456

如果并不知道x是否在字典的key中,需要查询字典中x对应的value,可以使用get方法

  • a.get(x, value=None):a表示字典,x表示查询的key,value表示默认值
  • 如果x在字典的key中,则上述的结果为a[x],如果不存在,上述结果为value
keys = ['a', 'b', 'c']
value = [123, 456, 789]
a = dict(list(zip(keys, value)))
print("a = ", a) # a = {'a': 123, 'b': 456, 'c': 789}

print(a.get('a', 'XXX')) # 123
print(a.get('d', 'XXX')) # XXX
print(a.get('e')) # None

添加和修改元素

字典通过直接利用key可以访问对应的value,类似的,添加元素、修改元素也是直接利用key和value就能进行添加或者更新

a = {}
a['语文'] = 80
print("a = ", a) # a = {'语文': 80}

a['数学'] = 99
print("a = ", a) # a = {'语文': 80, '数学': 99}

a['英语'] = 90
print("a = ", a) # a = {'语文': 80, '数学': 99, '英语': 90}

#修改元素
a['语文'] = 85
print("a = ", a) # a = {'语文': 85, '数学': 99, '英语': 90}

删除元素

删除字典中的键值对,可以用Python本身的删除语法del

s = {'a':123, 'b':456, 'c':789}
del s['a']
print("s = ", s) # s = {'b': 456, 'c': 789}
del s['b']
print("s = ", s) # s = {'c': 789}
del s['c']
print("s = ", s) # {}

删除字典中的键值对,也可以用字典的删除方法pop

s = {'a':123, 'b':456, 'c':789}
s.pop('a')
print("s = ", s) # s = {'b': 456, 'c': 789}
s.pop('b')
print("s = ", s) # s = {'c': 789}
s.pop('c')
print("s = ", s) # {}

遍历字典

与List一样,直接利用for语句就可以遍历字典

  • for x in a:其中x是循环变量,a是字典,此时遍历的是a的key列表
a = dict([['a', 123], ['b', 456], ['c', 789]])

for x in a:
	print(x)
# a 
# b 
# c

利用a.keys()a.values()a.items()可以分别循环遍历key、value、二元组(key,value)

s = {'a':123, 'b':456, 'c':789}
for x in s.keys():
	print(x)
# a
# b
# c
for y in s.values():
	print(y)
# 123
# 456
# 789
for x, y in s.items():
	print(x, y)
# a 123
# b 456
# c 789

判断是否存在元素

  • 字典中可以使用innot in判断某元素是否在字典中。
  • x in ax in a.keys():判断是否在a的key中
  • x in a.values():判断x是否在a的value中
  • (x, y) in a.items():判断x是否在a的key中,并且对应的value为y
s = {'a': 123, 'b': 456, 'c': 789}
print('a' in s) # True
print('d' in s.keys()) # False

print(123 in s.values()) # True
print(135 in s.values()) # False

print(('a', 123) in s.items()) # True
print(('b', 123) in s.items()) # False

拷贝字典

  • 与List类似,直接赋值无法进行赋值,需要使用copy函数完成复制
  • 直接赋值相当于是“引用”,就是添加一个别名
s = {'a': 123, 'b': 456, 'c': 789}
t = s
# 修改s,t也一起修改:t就是s
s['d'] = 1000
print("s =", s) # s = {'a': 123, 'b': 456, 'c': 789, 'd': 1000}
print("t =", t) # t = {'a': 123, 'b': 456, 'c': 789, 'd': 1000}

s = {'a': 123, 'b': 456, 'c': 789}
t = s.copy()
# 修改s,t不会修改:t就是s的副本
s['d'] = 1000
print("s =", s) # s = {'a': 123, 'b': 456, 'c': 789, 'd': 1000}
print("t =", t) # t = {'a': 123, 'b': 456, 'c': 789}

合并两个字典

  • 字典利用update方法可以将另一个字典的key-value对更新到已有字典中
  • a.update(b):把字典b中的每一个元素放入a中更新:
    • 如果b中的key在a中没有,则直接在a中添加一组新的key-value对
    • 如果b中的key在a中有,则直接更新对应的value
s = {'a':123, 'b':456, 'c':789}
t = {'a':321, 'd':1000}
s.update(t)
print("s = ", s) # s = {'a': 321, 'b': 456, 'c': 789, 'd': 1000}
print("t = ", t) # t = {'a': 321, 'd': 1000}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值