Python字典详解(dict)
2019-11-05 本文已影响0人
奇遇Python
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map。
字典demo
dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': [1,2,3]}
1.基本格式
a = {key1 : value1, key2 : value2 }
2.字典的键(key)必须不可变(如:字符串,数字,元组),值(key)可以为任意数据类型
a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11,22)}
3.字典是无序的,每次执行打印,顺序都会发生改变
实践才是真理,自己动手试试吧
4.根据键(key)或值(value)取出对应的值(value)或键(key) & for 循环
#返回关键字的值
b = d['a']
#将值关联到键值K上
d['a'] = '11'
#键值key是否在d中,是返回True,否则返回False
key in a
#删除指定键值对
del d[k]
5.字典的函数
dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11, 22)}
#1.type(dict)
#查看数据类型
type(dict1)
#输出结果为:<class 'dict'>
#2.str(dict)
#输出字典可以打印的字符串表示
str(dict1)
输出结果为:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11, 22)}
#3.len(dict)
#返回字典中 键:值对 的数量
len(dict1)
输出结果为:5
6.字典的方法
dict1 ={'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11, 22)}
-
6.1.删除
del dict1['a'] # 删除元素 a
print(dict1) # 打印结果:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'f': (11, 22)}
dict1.clear() # 清空字典
print(dict1) # 打印结果:{}
del dict1 # 删除字典
6.2.items()方法,循环获取key和value
# 用items方法 k接收key ,v接收value
for k, v in dict1.items():
print(k, v)
6.3.keys()方法,循环获取所有key
# 循环所有的key
for item in dict1.keys():
print(item)
6.4.values()方法,循环获取所有value
# 循环所有的values
for item in dict1.values():
print(item)
6.5.copy(浅拷贝)
dict2 = dict1.copy()
print ("新复制的字典为 : ",dict2)
6.6.fromkeys() 创建一个新字典,fromkeys(args, kwargs) 以args中元素做字典的键,kwargs为字典所有键对应的初始值
new_dict1= ('a', 'b', 'c')
dict1 = dict.fromkeys(new_dict1)
print(dict1)
print("新的字典 : %s" % str(dict1))
dict1 = dict.fromkeys(new_dict1, 8)
print("新的字典 : %s" % str(dict1))
#打印结果:
#新的字典 : {'a': None, 'b': None, 'c': None}
#新的字典 : {'a': 8, 'b': 8, 'c': 8}
6.7.get()方法根据key获取值 get(self, k, d=None) 参数:k:待操作的键(key), d:默认为None,在获取键的时候,如果不存在就返回 None 或指定什么就返回什么
a = dict1.get('a')
print('key存在时:', a)
d = dict1.get('d')
print('key不存在时:', d)
f = dict1.get('d', 123)
print("key不存在时并指定返回值:", f )
#打印结果为:
#新的字典 : {'a': 8, 'b': 8, 'c': 8}
#key存在时: 8
#key不存在时: None
#key不存在时并指定返回值: 123
6.8.pop()方法删除指定的key,pop(self, k, d=None) 参数: k:待删除的key d:如果待删除的key,则返回None ,或指定什么返回什么
a = dict1.pop('a')
print('key存在时:', v) # key存在时: 18
a1 = dict1.pop('a')
print('key不存在时:', v1) # key不存在时报错
a2 = dict1.pop('Hour', 123)
print("key不存在时并指定返回值:", a2)
# key不存在时并指定返回值: 123
6.9.popitem()方法,随机删除一个键值对
v1 = dict1.popitem()
k, v = dict1.popitem()
print(v1, k, v)
# 打印结果:('c', 8) b 8
6.10.setdefault 方法,给字典设置(增加)新的键,存在就不设置(获取当前key对应的值),不存在就设置并返回当前key对应的值 setdefault(self, k, d=None) 参数:k:待设置(添加)的key d:默认为空,可以指定value值
v = dict1.setdefault('a', '11') # 如果待加入的key跟字典内重复,则不会添加
print(dict1, v) # 打印结果: {'a':11, 'b': 8, 'c': 8} 11
6.11.update方法 ,更新字典 update(self, E=None, **F)
d12.update({'a':11, 'b': 8, 'c': 10}) # 第一种写法
# d12.update(Year=2019, Day=20, Hour=10) # 第二种写法
print(d12)
# 打印结果:{'Year': 2019, 'Month': 3, 'Day': 20, 'Hour': 10}
# 已存在的key就覆盖,不存在的key就添加进字典
7.字典对比
dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
dict2 = {'a': 1, 'b': 2, 'c': 4, 'f': 5}
# 同一元素内容不同dict1与dict2不同(key,value)
differ = set(dict1.items()) ^ set(dict2.items())
print(differ)
#{('c', 4), ('f', 5), ('c', 3), ('d', 4)}
diff = dict1.keys() & dict2
diff_vals = [(k, dict1[k], dict2[k]) for k in diff if dict1[k] != dict2[k]]
print(diff_vals)
#[('c', 3, 4)]
#获取相同元素(key,value)
same = dict1.items() & dict2.items()
print(same)
# {('b', 2), ('a', 1)}
#获取相同key
same_key = dict1.keys() & dict2.keys()
print(same_key)
# {'c', 'b', 'a'}
#key dict1不在dict2当中
diff_key = dict1.keys() - dict2.keys()
print(diff_key)