4.字典知识汇总

  1. 使用函数dict 从其他映射(如其他字典)或者键值对序列创建字典。
items = [("name","john"),("age",123)]
dItems = dict(items)
print(dItems)#{'name': 'john', 'age': 123}

#关键字实参
dItems = dict(name='jay',age=12)
print(dItems)#{'name': 'jay', 'age': 12}
  1. 基本的字典操作
  • len()返回字典中包括的项目数
  • d[key] 返回与key关联的value
  • d[key]=value 修改字典中的项
  • del d[key] 删除健为key的项
  • key in d 检查字典是否包含键key
#len()返回字典中包括的项目数
print("dItems 中元素的个数是: %d" %(len(dItems)))
#d[key] 返回与key关联的value
print("name = %s" %(dItems['name']))
#d[key]=value 修改字典中的项
dItems['age'] = 23
print("修改年龄后是:%d" %dItems['age'])

#del d[key] 删除健为key的项
del dItems['name']
dItems['name'] = '六小龄童'

print("我的艺名是:%s,年龄是 %d" %(dItems['name'],dItems['age']))
#key in d 检查字典是否包含键key
if 'name' in dItems:
    print(dItems['name'])
  1. 将字符串格式设置功能用于字典
books = {'book1':'人间失格',"book2":"悲惨世界"}
print("book1 的名称是{book1}".format_map(books))
  1. 字典方法
  • clear
dict2 = dict([("语文",99),("英语",34)])
dict2.clear()
print(dict2)#{}
  • copy
    如果替换副本中的值,原件不受影响,如果就地修改副本中的值(而不是替换),原件也会发生变化。
x = {'username':'admin','machines':['foo','bar','baz']}
y = x.copy()
y['username'] = 'mlh'
print(x)#{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
y['machines'].append('hod')
print(y)#{'username': 'mlh', 'machines': ['foo', 'bar', 'baz', 'hod']}
print(x)#{'username': 'admin', 'machines': ['foo', 'bar', 'baz', 'hod']}

为了避免原件受影响,因此可以用 deepcopy

from copy import deepcopy
x = {'username':'admin','machines':['foo','bar','baz']}
z = deepcopy(x)
print(z)#{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
z['username'] = 'jone'
z['machines'].clear()
print(x)#{'username': 'admin', 'machines': ['foo', 'bar', 'baz']}
print(z)#{'username': 'jone', 'machines': []}
  • fromkeys
    只用key就可以生成字典,fromkeys 的第一个参数是一个键的列表,第二个参数可加可不加,不加默认所有键对应的值是None,加的话就是指定键对应的值是第二个参数
dict_k = {}.fromkeys(['name','age'])
print(dict_k)#{'name': None, 'age': None}
dict_k1 = dict.fromkeys(['name','age'])
print(dict_k1)#{'name': None, 'age': None}
print({}.fromkeys(['name','age'],'~~~'))#{'name': '~~~', 'age': '~~~'}
  • get
    get(key,default_value)
    如果字典中有key,就返回key的value,否则默认返回None,如果指定了default_value,则返回default_value,这个方法不会抛出异常
x = {'username':'admin','machines':['foo','bar','baz']}
print(x.get('username'))#admin
print(x.get('age'))#None
print(x.get('sex','F'))#F
  • items
    返回包含字典项的列表,返回类型是dict_items类型
x = {"name":"jone","sex":"F","age":23}
y = x.items()
print(y)#dict_items([('name', 'jone'), ('sex', 'F'), ('age', 23)])
print(len(y))#3
  • keys
    返回key的字典视图key的列表,类型是dict_keys
x = {"name":"jone","sex":"F","age":23}
print(x.keys())#dict_keys(['name', 'sex', 'age'])
  • pop
    获取key对应的value,并从字典中删除
x = {"name":"jone","sex":"F","age":23}
print(x.pop('name'))#jone
print(x)#{'sex': 'F', 'age': 23}
  • popitem
    因字典没有先后顺序,所以该方法的作用是从字典中随机弹出一项
x = {"name":"jone","sex":"F","age":23}
print(x.popitem())
  • setdefault
    设置字典当键不存在时,设置默认值,如果键存在就不设置,只返回键对应的值
x = {"name":"jone","sex":"F","age":23}
x.setdefault('sal',2003.34)
print(x)#{'name': 'jone', 'sex': 'F', 'age': 23, 'sal': 2003.34}
x.setdefault('address')
print(x)#{'name': 'jone', 'sex': 'F', 'age': 23, 'sal': 2003.34, 'address': None}
x.setdefault('address','has ming')#{'name': 'jone', 'sex': 'F', 'age': 23, 'sal': 2003.34, 'address': None}
  • update
    使用一个字典中的项来更新另外一个字典
x = {"name":"jone","sex":"F","age":23}
y = {"name":"li","age":45}
x.update(y)

如果y中的键在x中不存在,那么就把字典y中的项加入到x中,如果键在x中存在就更新之

x = {"name":"jone","sex":"F","age":23}
y = {"name":"li","age1":45}
x.update(y)
print(x)#{'name': 'li', 'sex': 'F', 'age': 23, 'age1': 45}
  • values
    返回一个由字典中的值组成的字典视图
dict1 = dict([("语文",23),("数学",34)])
print(dict1.values()) # dict_values([23, 34])

你可能感兴趣的:(4.字典知识汇总)