python-Dict基础知识

Python中字典(Dict)的相关知识:

 
 
1.基础:python中dict是一系列键-值(key-value)对,可以使用key来访问相关联的value。
		与key相关联的value可以是数字、字符串、列表乃至字典。事实上,可以使用python
		中的任何一个对象作为字典中的值。
dict_test = {'First_name': 'Alex', 'Last_name': 'Shaw','Age': 27}
print(dict_test)
print(dict_test['Last_name'])
print(dict_test['Age'])

#访问dict中的int类型的值,但在print时必须进行转型
age_test = dict_test['Age']		
print("This man is " + str(age_test) + " years old.\n")
Output:{'First_name': 'Alex', 'Last_name': 'Shaw', 'Age': 27}
		Shaw
		27
		This man is 27 years old.

#添加key-value对
dict_test['School'] = 'Harbin'
dict_test['Number'] = 77
print(dict_test)
Output:{'First_name': 'Alex', 'Last_name': 'Shaw', 'Age': 27, 
					'School': 'Harbin', 'Number': 77}
#Python中key-value的排列顺序与添加顺序不一定相同。Python不关心key-value对的
#添加顺序,只关心key和value之间的关联关系	

#使用字典来存储用户提供的数据或在编写能自动生成大量key-value对的代码时,通常都
#需要先定义一个空字典。
	example_empty_dict = {}

#修改dict中的值,可一次指定dict名、用方括号括起的key以及与该key相关联的新value。
	dict_test['Age'] = 26
	print(dict_test)
	Output:{'First_name': 'Alex', 'Last_name': 'Shaw', 'Age': 26, 
					'School': 'Harbin', 'Number': 77}	
#删除key-value,删除的key-value值永久消失	
	del dict_test['Number']				

2.遍历字典
dict_test = {
	'First_name': 'Alex', 
	'Last_name': 'Shaw',
	'Age': '27',
	}

for key,value in dict_test.items():
#items()返回一个key-value对列表,for循环每次将一个key-value对存储到指定的变量 
	print("\nKey: " + key + "  " +  
			"Value: " + value)
#在遍历字典是,key-value对的返回顺序与存储顺序不一定相同,python值只关心key-value
#之间的关联关系	
	(1).遍历字典中的所有键
		keys():以列表形式返回字典中所有的键
		for items in dict_test.keys(): #返回的是一个列表
			print(items.title())
		#遍历字典时会默认遍历所有的键,所以上面的代码可以写成如下形式
		#但第一种方式可读性更高:
		for items in dict_test:
			print(items.title())
	(2).按顺序遍历字典中的所有键
		sorted(dict_test):获得按特定顺序排列的key列表的副本
		for items in sorted(dict_test.keys()):
			print(items.title())
	(3).遍历字典中所有的值
		values():返回一个值列表		
		for items in dict_test.values(): #返回的是一个列表
			print(items.title())
3.集合set:
	类似于列表,但没有重复元素.通过对包含重复元素的列表调用 set()方法可以找出
	列表中独一无二的元素,并使用这些元素来创建一个集合。
	dict_test = {
	'First_name': 'Alex', 
	'Last_name': 'Shaw',
	'Age': '27',
	'Age': '27',
	}	
	for items in set(dict_test.keys()):
		print(items.title())
4.嵌套:
	(1).字典列表:
		dict_test1 = {'First_name': 'Alex', 'Last_name': 'Shaw','Age': 27}
		dict_test2 = {'First_name': 'Poison', 'Last_name': 'Ash','Age': 7}	
		list_people = [dict_test1,dict_test2]	

		for person_info in list_people :
			print(person_info)	

		#自动生成列表中的字典元素
		list_people = []
		for person_info in range(30):
			new_people = {'First_name': 'Alex', 'Last_name': 'Shaw','Age': 27}
			list_people.append(new_people)
		for person_info in list_people[:5]:
			print(person_info)
	(2).在字典中存储列表:
		#每当需要在字典中将一个key关联到多个value时,都可以在字典中嵌套一个列表
		student = {
			'FirstName':['Alex'],
			'LastName':['Shaw'],
			'Score':['97','99','88'],	#以列表形式存储,外层是字典	
			'Like':['movie','skate','sing','coding'],
		}									
		#print("The " + student['FirstName'] + "'s score is : \n")
		for keys,values in student.items():
				print("The item is : " + keys.title() + '\n')
				for value in values:
					print('\t' + value) 	
		#列表和字典的嵌套层级不应太多,如果出现比上面的实例还多的嵌套,应该考虑
		#寻找其他解决方案
	(3).在字典中存储字典:
student = {
	'Alex':{
		'FirstName':'Alex',
		'LastName':'Shaw',
		'Score':'97',		
		'Like':'skate',
		},

	'Poison':{
		'FirstName':'Poison',
		'LastName':'Polaris',
		'Score':'77',	
		'Like':'dancing',
		'Else':'Nothing'
		},
	}
	'''
		定义一个字典,其中包含两个key:'Alex' and 'Poison';与每个key相关联的
	value都是一个字典。此处嵌套的两个字典结构大致相同,python中没有要求字典结构
	必须相同,但结构相同更方便for进行处理
	'''
for username,user_info in student.items():
	#打印字典中的所有信息
	print("\nUsername: " + username)
	print("\nUserinfor: " + str(user_info))  

	#打印字典中的部分信息
	full_name = user_info['FirstName'] + user_info['LastName']   
	score = user_info['Score']
	print("\tFull name: " + full_name)
	print("\tScore: " + score)	
Output:
Username: Alex

Userinfor: {'FirstName': 'Alex', 'LastName': 'Shaw', 'Score': '97', 
			'Like': 'skate'}
	Full name: AlexShaw
	Score: 97

Username: Poison

Userinfor: {'FirstName': 'Poison', 'LastName': 'Polaris', 'Score': '77', 
			'Like': 'dancing', 'Else': 'Nothing'}
	Full name: PoisonPolaris
	Score: 77


猜你喜欢

转载自blog.csdn.net/wdnysjqr/article/details/80338956