python- 数据类型的操作与区分03

数据类型

–列表
–字符串
–字典
–元组

字典

像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对。 在代码中,字典输入时带花括号{}。
不像列表,字典中的表项是不排序的。名为 spam 的列表中,第一个表项是spam[0]。但字典中没有“第一个”表项。虽然确定两个列表是否相同时,表项的顺序很重要, 但在字典中,键-值对输入的顺序并不重要。

>>>spam['cat','dog','bear']
>>>bacon['dog','bear','cat']
>>>spam == bacon
False
>>>
>>> eggs = {'name': 'Zophie', 'species': 'cat', 'age': '8'}
>>> ham = {'species' : 'cat', 'age' : '8', 'name' : 'Zophie'}
>>>eggs == ham
True

因为字典是不排序的,所以不能像列表那样切片。但可以用任意值作为键,这一点让你能够用强大的方式来组织数据。 假定你希望程序保存朋友生日的数据,就可以使用一个字典,用名字作为键,用生日作为值。

birthdays = {‘Alice’ : 'Apr 1','Akrnm' : 'Dec 12','BOB' : 'Mar 4'}
while True:
	print('enter a name:  (space quit) ')
	name = input()
	if name == ' ':
		break
		
	if name in birthdays:
	    #就像查看列表一样。如果该名字在字典中,你可以用方括号访问关联的值
		print(birthdays[name] + ' is the birthday of ' + name)
	else:
		print('I do not have birthday information for ' + name)
		print('What is their birthday?')
		#如果不在,你可以用同样的方括号语法和赋值操作符添加它
		bday = input()
        birthdays[name] = bday
		print('Birthday database updated.')

1.keys()、values()和 items()方法
它们将返回类似列表的值,分别对应于字典的键、值和键-值对:keys()、values()和 items()。这些方法返回的值不是真正的列表,它们不能被修改但这些数据类型(分别是dict_keys、dict_values 和dict_items)可以用于
for 循环。

>>>for 循环迭代了 spam 字典中的每个值
>>>spam = {'color' : 'red','age' : 42}
>>>for i in spam.value():
		print(i)
red
42

=========================================================

>>>for q in spam.keys():
		print(q)
color
age

=========================================================

>>>items()方法返回的 dict_items 值中,包含的是键和值的元组。
>>>for k in spam.items():
		print(k)
('color','red')
('age','42')	

如果希望通过这些方法得到一个真正的列表,就把类似列表的返回值传递给 list函数。list(spam.keys())代码行接受 keys()函数返回的 dict_keys 值,并传递给 list()。然后返回一个列表,即[‘color’, ‘age’]。

也可以利用多重赋值的技巧,在 for 循环中将键和值赋给不同的变量。在交互式环境中输入以下代码:

>>>spam = {'color': 'red', 'age': 42}
>>>for k, v in spam.items():
		print('Key: ' + k + ' Value: ' + str(v))
		
Key: color Value: red
Key: age Value: 42	

2.get()方法
检查该键是否存在于字典中,字典有一个get()方法,它有两个参数:要取得其值的键,以及如果该键不存在时,返回的备用值。

>>> picnicItems = {'apples': 5, 'cups': 2}
>>> 'I am bringing ' + str(picnicItems.get('cups', 0)) + ' cups.'
'I am bringing 2 cups.'
>>> 'I am bringing ' + str(picnicItems.get('eggs', 0)) + ' eggs.'
'I am bringing 0 eggs.'

因为 picnicItems 字典中没有’egg’键,get()方法返回的默认值是 0。不使用 get(),代码就会产生一个错误消息,就像下面的例子:

>>> picnicItems = {'apples': 5, 'cups': 2}
>>> 'I am bringing ' + str(picnicItems['eggs']) + ' eggs.'

Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
'I am bringing ' + str(picnicItems['eggs']) + ' eggs.'
KeyError: 'eggs'

3.setdefault()方法
setdefault()方法提供了一种方式,在一行中完成这件事。传递给该方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值。在交互式环境中输入以下代码:

>>> spam = {'name': 'Pooka', 'age': 5}
>>> spam.setdefault('color', 'black')
'black'
>>> spam
{'color': 'black', 'age': 5, 'name': 'Pooka'}
>>> spam.setdefault('color', 'white')
'black'
>>> spam
{'color': 'black', 'age': 5, 'name': 'Pooka'}

笔记:Python 编程快速上手——让繁琐工作自动化[美] Al Sweigart

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值