一、字典dict基本概念
字典是一种可变容器模型,且可存储任意类型变量,字典的每个键值(key=>value)对可以用冒号(:)来分割,每个对之间用逗号(,)来分割,整个字典包括在花括号({})中。
1、什么是序列?什么是字典?
name=['wish','alibaba','amazon']
rank=[3,2,1]
虽然序列是有顺序的,但是不能直接把“name”和“rank”关联起来,这里只是顺序对上,并没有一对一的关系存在。
dic={'wish':3,'alibaba':2,'amazon':1}
print(dic,type(dic))
字典用{}来表示,按照key:value来表示字典中的元素,其中key是键,value是值,key-value是赋值对,这里的dic就是一个字典类型的变量。
对于字典的索引,可以利用字典中的key去做索引:
a=dic['amazon']
print(a)
2、字典的特点及基本操作
键值对,一定共同出现,不能只有一个:
dic={'a':1,'b':2,'c':3}
不允许同一个键出现两次,创建时如果同一个键被赋值两次,那么后一个值会被记住:
dic={'a':1,'a':2}
print(dic)
key必须是不可变的对象,value则可以是任意对象:数值、字符串、序列、字典:
dic={'var1':1,'var2':'hello','var3':[1,2,3],'var4':{'a':1,'b':2}}
print(dic)
字典是一个无序集合,序列由于没有key来做对应,所以以顺序来对应值,序列是有顺序的,但是字典没有。
添加/修改/删除元素:
dic={'var1':1,'var2':'hello','var3':[1,2,3],'var4':{'a':1,'b':2}}
print(dic)
dic['var5']='amazon' # 添加一个元素
dic['var4']='wish' # 修改一个元素
del dic['var1'] # 删除一个元素
print(dic)
清空词典所有条目:
dic.clear()
print(dic)
除了上述方法,还可以用dict()来进行字典的声明:
dic=dict(amazon=10,alibaba='alibaba',wish=[1,2,3])
print(dic)
lst1=[('amazon','FBA'),('wish','eBay')]
lst2=[['a',1],['b',2]]
dic1=dict(lst1)
dic2=dict(lst2)
print(dic1,dic2)
如果只有key,可以通过如下方式直接生成一个字典:
keys=['amazon','ebay','wish']
dic1=dict.fromkeys(keys)
dic2=dict.fromkeys(keys,'e-commerce')
print(dic1,dic2)
二、字典的常用操作
1、更新/合并字典
dict.update()方法可以用来更新/合并一个字典,把第二个字典合并到第一个字典中去,这样就改变了第一个字典:
dic1={'amazon':1,'ebay':2}
dic2={'alibaba':3,"wish":4}
dic1.update(dic2)
print(dic1,dic2)
2、计算字典长度:
print(len(dic1))
3、成员判断
注意,在字典中,只能用key来判断该成员是否包含在字典中,而不能用value来判断该成员是否包含在字典中:
dic={'a':1,"b":2}
print('a' in dic) # key来判断
print(1 in dic) # value来判断
三、字典的元素访问和遍历
第一种访问方式就是用key作为指向来访问(指向的key必须要存在),在上文中已经介绍过了。
对于嵌套的字典该如何读取:
sample=[{'name':'shop1','location':'shanghai','information':{'product':'something1','number':1}},
{'name':'shop2','location':'shanghai','information':{'product':'something1','number':2}},
{'name':'shop3','location':'shanghai','information':{'product':'something1','number':3}}]
print(sample[1]['information']['product'])
直接查看key的value:(如果没有值的话会导出一个nothing)
sample={'name':'amazon'}
print(sample.get('name'))
输出字典中所有的key:
sample={'name':'amazon','city':'shanghai'}
print(sample.keys(),type(sample.keys()))
输出字典中所有的value:
sample={'name':'amazon','city':'shanghai'}
print(sample.values(),type(sample.values()))
输出字典中所有的元素:
sample={'name':'amazon','city':'shanghai'}
print(sample.items(),type(sample.items()))
字典的元素遍历(这里用到的条件/循环语句会在下一篇文章中介绍):
sample={'name':'amazon','city':'shanghai','information':{'product':'something','number':1}}
for keys in sample:
print(keys)
sample={'name':'amazon','city':'shanghai','information':{'product':'something','number':1}}
for values in sample.values():
print(values)
sample={'name':'amazon','city':'shanghai','information':{'product':'something','number':1}}
for keys in sample:
print(sample[keys])
sample={'name':'amazon','city':'shanghai','information':{'product':'something','number':1}}
for (key,value) in sample.items():
print('key为:%s,values为:%s'%(key,value))