字典的好处在于,使用字典,可以更准确地位各种真实物体建模。
字典是一系列的键值对。每个键都与一个值相关联,使用键来访问与之相关的值。任何Python对象都可以用作字典中的值。

one={'name':'lin','age':16}
print(one['name'])
print(one.get('name','none')
#输出:lin
	#  lin

指定键,就会返回相关的值。键与值之间用冒号分隔,键值对之间使用逗号分隔。
要访问值时,可一次指定字典名和放在方括号里的健,亦可以通过get(‘key’,‘none’)的方法获得。

  • 添加键值对
    可依次指定字典名、用方括号括起来的键,等号和相关联的值。
one={}
one['name']='lin'
one['age']=16
print(one)
#output: {'name':'lin','age':16}

注意:Python不关心键值对的添加顺序,只关心键与值之间的关联关系。
使用字典来存储用户提供的数据或在编写自动生成大量键值对的代码时,通常要先定义一个空字典。

  • 修改健值对
    与添加值方法一样,不同的是修改时用的健是字典本身就有的,而添加时是添加字典本身没有的健。
  • 删除键值对
    使用del语句将对应的键值对彻底删除。使用该语句是,必须指定字典名和要删除的健。
one={'name':'lin','age':16}
del one['name']
print(one)
#output:{'age':16}
  • 字典较大时的编写规范
one={
	'name':'lin',
	'age':16,
	'location':'china',
	}

遍历字典

  • 遍历键值对
one={
	'name':'lin',
	'age':16,
	'location':'china',
	}
for key,value in one.items():
	print('thr key is '+key)
	print('the item is '+value)

要编写用于遍历字典的for循环,可声明两个变量,名字不重要,但请使用描述性的变量名。
方法items()返回一个个键值对元组组成的列表。该循环让键存储到变量key中,让值存储到变量value中。

  • 遍历键
    在不需要使用字典中的值时,使用方法keys()。
one={
	'name':'lin',
	'age':16,
	'location':'china',
	}
for name in one.keys():
	print('thr name is '+name)

该for循环让Python提取字典中的所有键,并依次存储进变量name中。
如果不使用该方法,即for name in one:也能得到遍历所有键的结果。
方法keys()返回一个列表,其中包含字典的所有键。
因为获取字典元素时,顺序是不可控的。我们可以使用函数sorted()来获得按特定顺序排列的键列表的副本。

for name in sorted(one.keys()):
	print('thr name is '+name)
  • 遍历所有值
    使用方法values(),它返回一个值列表,不包含任何键。
one={
   'name':'lin',
   'age':16,
   'location':'china',
   }
for content in set(one.values()):
   print('thr name is '+content)

在本例中,我们使用了方法values()来获取字典中的所有值。为了剔除重复项,我们用使用方法set()创建一个集合,集合元素具有互斥性。

嵌套

无论是将一系列字典存储到列表中,还是将列表作为值存储到字典中,都是嵌套。

  • 在列表中嵌套字典
one=[]
#创建十个相同的对象
for he in range(10):
	nwu={'name':'lin','age':16,'area':'china'}
	one.append(nwu)
#输出后四个对象
for he in one[:-4]:
	print(he)
#输出总共创建的数目
print('total number is '+str(len(one)))

虽然这些对象都是一样的,但在Python眼中,每个he都是独立的。
要修改部分对象时,我们使用切片和if语句。

  • 在字典中嵌套列表
one={
	'name':'lin',
	'age':16,
	'favorite foods':['dumplings','noodles'],
	}
print("He is "+one['name']+".His favorite foods are ")
#输出列表元素
for food in one['favorite foods']:
	print(food)

每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
在使用for循环遍历输出列表元素。

  • 在字典中存储字典
#在字典中嵌套字典
all={
	one:{
	'name':'lin',
	'age':16,
	'favorite foods':['dumplings','noodles'],
	},
	two:{
	'name':'liu',
	'age':17,
	'hobby':'read',},
	}
	#遍历键值对
for name,info in all.items():
	print('the order is '+name)#输出键
	print('the name is :'+info['name'])#输出值中的name值