python学习笔记-day05 字典

数据类型

数据类型可以分为可变数据类型和 不可变数据类型两种:

不可变数据类型:元组(tuple),bool, int,  str(对字符串的任何操作都是产生一个新的str,园幼儿字符串是不变的)

可变数据类型: 列表(ist),字典(dict)

字典

字典:映射结构,字典的key必须是不可变数据类型(元组,bool int ,str)

字典的优点:二分查找;可存储大量的关系型数据

增:

1.直接增加键值对:

dic={'name':'xuanxuan','age':22,'gender':'female'}
dic['hobbi']='dancing'
print(dic)

运行结果:

dic={'name':'xuanxuan','age':22,'gender':'female'}
dic['hobbi']='dancing'
print(dic)

如果添加的键值是字典中已经存在的键,则会覆盖该键对应的原来的值:

dic={'name':'xuanxuan','age':22,'gender':'female'}
dic['hobbi']='dancing'   #如果没有,会增加
dic['name']='xuanzhang'  #如果有,会覆盖
print(dic)

运行结果:

{'name': 'xuanzhang', 'age': 22, 'gender': 'female', 'hobbi': 'dancing'}

2.setdefault()方法

dic={'name':'xuanxuan','age':22,'gender':'female'}
dic.setdefault('hobbi')   #值缺省,默认添加的对应该键的值为None
# dic.setdefault('hobbi','dancing')
print(dic)

运行结果:

{'name': 'xuanxuan', 'age': 22, 'gender': 'female', 'hobbi': None}

如果setdefault()后面value对应的参数有值,则添加:

dic={'name':'xuanxuan','age':22,'gender':'female'}
# dic.setdefault('hobbi')   #值缺省,默认添加的对应该键的值为None
dic.setdefault('hobbi','dancing')
print(dic)

运行结果:

{'name': 'xuanxuan', 'age': 22, 'gender': 'female', 'hobbi': 'dancing'}

如果setdefault中的键已经存在,则无任何变化:

dic={'name':'xuanxuan','age':22,'gender':'female'}
dic.setdefault('name','xuan')
print(dic) 

运行结果:

{'name': 'xuanxuan', 'age': 22, 'gender': 'female'}

所以,通过dict[key]=value 和dict.setdefault(key,value)方法的区别是:

当key在字典中不存在时,两种方法都是在字典中增加该键值对;

当key在字典中已经存在时,前者会修改,即覆盖,后者不会修改原来的值,即无变化,不进行任何操作;

删:

dic.pop(key)方法:  有返回值,返回键对应的值

dic={'name':'xuanxuan','age':22,'gender':'female'}
return_value=dic.pop('name')    # pop()方法有返回值,返回该键对应的值
print(return_value)

运行结果:

xuanxuan

dic.popitem():随机删除字典的键值对(python3.6字典有序,删最后一个),有返回值,返回键值对组成的tuple

dic={'name':'xuanxuan','age':22,'gender':'female'}
return_value=dic.popitem()    # pop()方法有返回值,返回该键对应的值
print(return_value)

运行结果:

('gender', 'female')

dict.clear()  #不是从内存中删除,只是删除字典中的元素,clear之后字典为空

dic={'name':'xuanxuan','age':22,'gender':'female'}
dic.clear()  #不是从内存中删除,没有返回值
print(dic)   #字典空

运行结果:

{}

del dict : 删除字典,从内存中彻底删除,也可以指定删除某一个键

dic={'name':'xuanxuan','age':22,'gender':'female'}
del dic['name']  #可以删掉字典中的某一个键值对
print(dic)  

运行结果:

{'age': 22, 'gender': 'female'}

 删除整个字典(从内存)

dic={'name':'xuanxuan','age':22,'gender':'female'}
del dic  #从内存中删掉字典
print(dic)  #会报错

运行结果:

Traceback (most recent call last):
  File "F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day07/01.py", line 12, in <module>
    print(dic)  #会报错
NameError: name 'dic' is not defined

改:

1. 可以直接指定键,通过赋值修改(因为字典是可变对象)

dic={'name':'xuanxuan','age':22,'gender':'female'}
dic['name']='xuan'
print(dic)

运行结果:

{'name': 'xuan', 'age': 22, 'gender': 'female'}

2.dict1.update(dict2) 会更新dict1(按照dict2)

dict2有dict1中的键,则会覆盖dict1,如果dict1中没有,则会追加到dict1

dic={'name':'xuanxuan','age':22,'gender':'female'}
dic2={'name':'xuanzhang','job':'student'}
dic2.update(dic)
print(dic2)

运行结果:

{'name': 'xuanxuan', 'job': 'student', 'age': 22, 'gender': 'female'}

查:

dict.keys()     #返回字典的键,返回的结果可以当做list操作

dict.values()  #返回字典的值,返回的结果可以当做list操作

dic.itmes()    #返回字典的键值 成一个tuple 返回的结果可以当做list操作

dic={'name':'xuanxuan','age':22,'gender':'female'}
print(dic['name'])

运行结果:

xuanxuan
dic={'name':'xuanxuan','age':22,'gender':'female'}
print(dic.keys())    #返回的是dic的键,可以按照list进行操作
print(dic.values())  #返回的是dic的值,可以相当于list进行操作
print(dic.items())  #返回的是键值组成的tuple

运行结果:

dict_keys(['name', 'age', 'gender'])
dict_values(['xuanxuan', 22, 'female'])
dict_items([('name', 'xuanxuan'), ('age', 22), ('gender', 'female')])
dic={'name':'xuanxuan','age':22,'gender':'female'}
for i in dic:   # for i in dic.keys():两种方法都是返回dic的key
    print(i)

运行结果:

name
age
gender

dic.values()

for i in dic.values():
    print(i)

运行结果:

xuanxuan
22
female

dic.items()

dic={'name':'xuanxuan','age':22,'gender':'female'}
for i in dic.items():
    print(i)

 运行结果:

('name', 'xuanxuan')
('age', 22)
('gender', 'female')

dic.get(key,None)  #返回字典的对应的值,当键不存在时,可以返回默认值None,当然也可以设置

dic={'name':'xuanxuan','age':22,'gender':'female'}
print(dic.get('name'))  #xuanxuan
print(dic.get('name1','该键值不存在'))  #并不会报错,

运行结果:

xuanxuan
该键值不存在
talk is cheap,show me the code
原文地址:https://www.cnblogs.com/xuanxuanlove/p/9510742.html