字典dict
为什么需要字典类型?
>>> list1 = ["name", "age", "gender"]
>>> list2 = ["fentiao", 5, "male"]
>>> zip(list1, list2) //通过zip内置函数将两个列表结合,help(zip)
[('name', 'fentiao'), ('age', 5), ('gender', 'male')]
>>> list2[0] //在直接编程时,并不能理解第一个索引表示姓名
'fentiao'
>>> list2[name]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str
- 故字典是python中唯一的映射类型,key-value(哈希表),字典对象是可变的,但key必须用不可变对象。
字典的定义:
- 简单字典创建
>>> dic = {"name":"fentiao", "age":5, "gender":"male"}
>>> dic[0] //不能通过索引提取value值
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 0
>>> dic["name"] //根据key找出value值
'fentiao'
- 内建方法:fromkeys
>>> ddict = {}.fromkeys(('username','password'),'fentiao')
//字典中的key有相同的value值,默认为None
>>> ddict
{'username': 'fentiao', 'password': 'fentiao'}
>>> ddict = {}.fromkeys(('username','password'),)
>>> ddict
{'username': None, 'password': None}
访问字典的值:
- 直接通过key访问
- 循环遍历
>>> dic
{'gender': 'male', 'age': 8, 'name': 'fentiao'}
>>> for k in dic:
... print k
...
gender
age
name
>>> for k in dic:
... print dic[k]
...
male
8
fentiao
# 字典的key-value值添加:
>>> dic["kind"] = "cat"
>>> dic
{'gender': 'male', 'age': 8, 'name': 'fentiao', 'kind': 'cat'}
字典的删除:
>>> dic
{'gender': 'male', 'age': 8, 'name': 'fentiao', 'kind': 'cat'}
>>> dic.pop("kind") //弹出字典中key值为"kind"的元素并返回该key的元素
'cat'
>>> dic
{'gender': 'male', 'age': 8, 'name': 'fentiao'}
>>> dic.clear() //删除字典的所有元素
>>> dic
{}
>>> del dic //删除整个字典
>>> dic
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dic' is not defined
字典的常用方法:
- dict.get():如果key存在于字典中,返回对应value值
>> dic
{'gender': 'male', 'age': 8, 'name': 'fentiao', 'kind': 'cat'}
>>> dic.get(3)
>>> dic.get("name")
'fentiao'
- dic.keys()
>>> dic
{'gender': 'male', 'age': 8, 'name': 'fentiao', 'kind': 'cat'}
>>> dic.keys()
['gender', 'age', 'name', 'kind']
自己试试:
len(), hash()
dict.clear()
dict.fromkeys(seq, value=None)
dict.get()
dict.has_keys(), in, not in
dict.items()
dict.keys()
dict.pop()
dict.setdefault()
dict.update()
dict.values()