python从入门到实践笔记(四)

时间:2018/04/26

主要内容:6.字典


字典


一个简单的字典

alien_0={'color':'green','points':5}
print(alien_0['color'])
print(alien_0['points'])


使用字典

    在Python中,字典是一系列键-值对,每个键都与一个值相关联,你可以使用键来访问相关联的值。可以将任何Python对象用作字典中的值。

    在Python中,字典用放在{}中的一系列键-值对来表示。键-值对是两个相关联的值。制定键时,Python将返回与之关联的值。键和值之间用冒号分隔。

访问字典中的值

alien_0={'color':'green','points':5}
new_points=alien_0['points']
print ('You just earned '+str(new_points)+' points!')

添加键-值对

alien_0={'color':'green','points':5}
print(aline_0)
#添加键-值对
alien_0['x_position']=0
alien_0['y_position']=25
print(alien_0)#键-值对的排列顺序并不一定与添加顺序相同

先创建一个空字典

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

alien_0={}
alien_0['color']='green'
alien_0['points']=5
print(aline_0)

修改字典中的值

#将字典中外星人的颜色修该为黄色
alien_0={'color':'green'}
print('The alien is '+alien_0['color']+'.')
alien_0['color']='yellow'
print('The alien is '+alien_0['color']+'.')
alien_0={'x_position':0,'y_position':25,'speed':'medium'}
print('Original x_position: '+str(alien_0['x_position']))
#向右移动外星人
#根据外星人的当前速度决定将其移动多远
if alien_0['speed']=='slow':
	x_increment=1
elif alien_0['speed']=='medium':
	x_increment=2
elif alien_0['speed']=='high':
	x_increment=3
#新位置等于老位置加增量
alien_0['x_position']=alien_0['x_position']+x_increment
print('New x_position: '+str(alien_0['x_position']))

删除键-值对

alien_0={'x_position':0,'y_position':25,'speed':'medium'}
print(alien_0)
#使用del语句删除speed
del alien_0['speed']
print(alien_0)

由类似对象组成的字典

    字典除了储存一个对象的多种信息外,也可以用来储存众多对象的同一信息。

favorite_language={
	'jen':'python',
	'sarah':'c',
	'edward':'ruby',
	'phil':'python'
	}
print('Sarah\'s favorite language is '+
	favorite_language['sarah'].title()+
	'.'
	)

遍历字典

遍历所有的键-值对

利用for循环遍历字典: for key,value in the d.items():

favorite_language={
	'jen':'python',
	'sarah':'c',
	'edward':'ruby',
	'phil':'python'
	}
#该处的代码让python遍历字典favorite_language中的每个键值对,并将键储存在name变量中,将值储存在language变量中
	for name,language in favorite_language.items():
	print(name.title()+
	'\'s favorite language is '+
	language.title()+
	'.'
	)
遍历字典中的所有键

    在不需要使用字典中的值时,方法keys()很有用。

favorite_languages={
	'jen':'python',
	'sarah':'c',
	'edward':'ruby',
	'phil':'python'
	}
#该处的代码让python遍历字典favorite_language中的每个键并将键储存在name变量中,将值储存在language变量中
for name in favorite_languages.keys():
	print(name.title())
favorite_languages={
	'jen':'python',
	'sarah':'c',
	'edward':'ruby',
	'phil':'python'
	}
friends=['phil','sarah']
#遍历字典时,会默认遍历所有的键,所以可以省略后面的方法。keys()
for name in favorite_languages:
	print(name.title())
	if name in friends:
		print(' Hi '+name.title()+
			',I see your favorite_language is '+
			favorite_languages[name].title()+
			'!'
			)
favorite_languages={
	'jen':'python',
	'sarah':'c',
	'edward':'ruby',
	'phil':'python'
	}
friends=['phil','sarah']
#还可以通过keys()来检查键是否在字典中
if 'erin' not in favorite_languages.keys():
	print('Erin,please take our poll!')

按顺序遍历字典中的所有键

    使用函数sorted()来获得按特定顺序排列的键列表的副本,再使用for循环。

favorite_languages={
	'jen':'python',
	'sarah':'c',
	'edward':'ruby',
	'phil':'python'
	}
for name in sorted(favorite_languages.keys()):
	print(name.title()+',thank you for taking the poll!')

遍历字典中的所有值

    使用方法value.()

favorite_languages={
	'jen':'python',
	'sarah':'c',
	'edward':'ruby',
	'phil':'python'
	}
print('The following languages have been mentionged: ')
for language in favorite_languages.values():
	print(language.title())

#为了剔除重复项,可使用集合(set),集合类似于列表,但是集合中的每个元素必须是独一无二的。

favorite_languages={
	'jen':'python',
	'sarah':'c',
	'edward':'ruby',
	'phil':'python'
	}
print('The following languages have been mentionged: ')
for language in set(favorite_languages.values()):
	print(language.title())


嵌套

    有时候需要将一系列字典存储在列表中,或者将列表作为值储存在字典中,这成为嵌套。

字典列表

#创建包含三个外星人的列表
alien_0={'color':'green','point':5}
alien_1={'color':'yellow','point':10}
alien_2={'color':'red','point':15}
aliens=[alien_0,alien_1,alien_2]
for alien in aliens:
	print(alien)

实际情况中,外星人不止3个且每个外星人都是代码自动生成的:

#创建一个用于储存外星人的空列表
aliens=[]

#创建30个绿色的外星人
for alien_number in range(30):
	new_alien={'color':'green','points':5,'speed':'slow'}
	aliens.append(new_alien)

#显示前5个外星人
for alien in aliens[:5]:
	print(alien)
	
#显示创建了多少外星人
print('Total number of aliens: '+
	str(len(aliens)))

!for ...in range()

修改前3个外星人为黄色

#创建一个用于储存外星人的空列表
aliens=[]

#创建30个绿色的外星人
for alien_number in range(30):
	new_alien={'color':'green','points':5,'speed':'slow'}
	aliens.append(new_alien)

#修改前3个外星人为黄色
for alien in aliens[0:3]:
	if alien['color']=='green':
		alien['color']='yellow'
		alien['speed']='medium'
		alien['points']=10

#显示前5个外星人
for alien in aliens[:5]:
	print(alien)
	
#显示创建了多少外星人
print('Total number of aliens: '+
	str(len(aliens)))

在字典中储存列表

#储存所点的披萨的信息
pizza={
	'crust':'thick',
	'toppings':['mushrooms','extra cheese']
	}
#概述所点的披萨
print('Your ordered a '+pizza['crust']+'-crust pizza with the following toppings:')
for topping in pizza['toppings']:
	print('\t'+topping)

在字典中储存字典

users={
	'aeinstein':{
		'first':'albert',
		'last':'einstein',
		'location':'princeton',
		},
	'mcurie':{
		'first':'marie',
		'last':'curie',
		'location':'paris',
		},
	}
for username,user_info in users.items():
	print('\nUsername: '+username)
	full_name=user_info['first']+' '+user_info['last']
	location=user_info['location']
	
	print ('\tFull name: '+full_name.title())
	print ('\tLocation: '+location.title())
!该例子中因为每位用户字典结构都相同因而看起来处理较为简单,倘若表示每位用户的字典都包含不同的键,for循环的内部代码将会更加复杂。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值