TASK7-9 字典、集合、序列
1 字典简介
#字典的标志性符号是‘大括号:{}’。
#字典由对象组成,每个对象包括键和值,与键相关联的值包括数字、字符串、列表、字典等。
#键和值之间用‘冒号:’隔开。
#对象之间用‘逗号,’隔开。
a = {'樱桃':'红色','苹果':'绿色'}
type(a)
dict
#以上便为字典的表现方式之一。
1)访问字典中的值
a = {'樱桃':'红色','苹果':'绿色'}
print(a['樱桃'])
红色
a = {'樱桃':'红色','苹果':'绿色'}
print('我喜欢' + a['樱桃'] + '.')
我喜欢红色.
#访问字典中的值,只需指定字典名和放在方括号中的值。
2)添加对象
a = {'樱桃':'红色','苹果':'绿色'}
a['香蕉'] = '黄色'
print(a)
{'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
#python不关心对象的添加顺序,只关心对象中键和值之间的关联关系。
3)修改值和删除字典的对象
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
a['苹果'] = '黄色'
print(a)
{'樱桃': '红色', '苹果': '黄色', '香蕉': '黄色'}
#修改字典中的值只需将键重新赋予新的值即可。
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
del a['苹果']
print(a)
{'樱桃': '红色', '香蕉': '黄色'}
2 字典的内置函数
1)fromkeys :创建及返回新的字典。
a = {}
a.fromkeys ((1,2,3),'数字')
{1: '数字', 2: '数字', 3: '数字'}
a = {}
a.fromkeys ((1,2,3),'数字','number')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-4-2619eb9bdf14> in <module>
1 a = {}
----> 2 a.fromkeys ((1,2,3),'数字','number')
TypeError: fromkeys expected at most 2 arguments, got 3
#首先建立一个空字典。然后利用fromkeys内置函数创建字典。
#基本格式:字典名称.内置函数()。
#fromkeys内置函数只能对所有键建立相同的一个值,不能建立多个值。
2)访问字典中的键、值、对象
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
a.keys()
dict_keys(['樱桃', '苹果', '香蕉'])
a = {}
a = a.fromkeys(range(5),'棒')
for eachkey in a.keys():
print(eachkey)
0
1
2
3
4
a = {}
a = a.fromkeys(range(5),'棒')
for eachvalue in a.values():
print(eachvalue)
棒
棒
棒
棒
棒
a = {}
a = a.fromkeys(range(5),'棒')
for eachitem in a.items():
print(eachitem)
(0, '棒')
(1, '棒')
(2, '棒')
(3, '棒')
(4, '棒')
#以上分别访问键、值、对象,用的内置函数分别是keys、values、items。
若在查找字典时,若无,可用get。
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
a.get('火龙果','没有')
'没有'
#在写代码时,注意不要夹杂不必要的中文空格等,否则会报错。
#当然也可以用in、not in等来测试某键是否在此字典中。
#字典检索的键,而序列等检索的是值。
'火龙果'in a
False
3)其他内置函数
dir(dict)
['__class__',
'__contains__',
'__delattr__',
'__delitem__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__reversed__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__',
'clear',
'copy',
'fromkeys',
'get',
'items',
'keys',
'pop',
'popitem',
'setdefault',
'update',
'values']
#pop 与 popitem,pop跳出的是值,popitem是随机跳出一个对象。
#clear 清空。clear清空的引用地址。以下例子,两个变量用等号链接,表示b引用a,两个变量指向同一个地址,而clear清空的是地址,故a和b都被清空了。
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
b = a
b.clear()
b
{}
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
b = a
b.clear()
a
{}
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
b = a
a.clear()
a
{}
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
b = a
a.clear()
b
{}
#setdefault类似于get,但若字典中无此键,则会自动添加。
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
a.setdefault('火龙果')
a
{'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色', '火龙果': None}
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
a.setdefault('火龙果','红色')
a
{'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色', '火龙果': '红色'}
a = {'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色'}
b = {'火龙果':'红色'}
a.update(b)
a
{'樱桃': '红色', '苹果': '绿色', '香蕉': '黄色', '火龙果': '红色'}