《python基础教程》 --读书笔记(3)

字典

列表这种数据结构适合将值组织到一个结构中,并通过编号对其进行引用。而字典通过名字来引用值的数据结构,也就是映射。

创建和使用字典

  1. dict函数
>>> items = [("name","liu"),("age","25")]
>>>> m = dict(items)
>>> m
{'name': 'liu', 'age': '25'}
  1. 基本字典操作
  • len(m) 返回m中项的数量
  • m[k] 返回关联到键k上的值
  • m[k] = v 将值v关联到键k上
  • del m[k] 删除键为k的值
  • k in m 检查m中是否含有键为k的项
  • 字典的键不一定为整型数据,键可以是任意的不可变类型
  • 即使键起初在字典中不存在,也可以为它赋值
  • 表达式k in m 查找的是键不是值
>>> m
{'name': 'liu', 'age': '25'}
>>> len(m)
2
>>> m["name"]
'liu'
>>> m["age"] = 22
>>> m
{'name': 'liu', 'age': 22}
>>> del m["age"]
>>> "age" in m
False
>>> "name" in m
True
>>>
>>> x = {}
>>>> x[12] = "test"
>>> x
{12: 'test'}
  1. 字典方法
  • clear
    clear方法清除字典中的所有的项
#第一种情况
>>> x = {}
>>> y = x
>>> x["key"] = "value"
>>> x = {}
>>> y
{'key': 'value'}
#第二种情况
>>> x = {}
>>> y = x
>>> x["v"] = "k"
>>> y
{'v': 'k'}
>>> x.clear()
>>> y
{}
  • copy
    copy方法返回一个具有相同键值对的新字典,(这个方法实现是浅复制
>>> x = {"name":"a1","test":[1,2,3]}
>>> y = x.copy()
>>> y["name"] = "a2"
>>> y["test"].remove(2)
>>> x
{'name': 'a1', 'test': [1, 3]}
>>> y
{'name': 'a2', 'test': [1, 3]}

深复制需要使用copy模块的deepcopy函数来完成操作

>>> from copy import deepcopy
>>> d = {}
>>> d["name"] = ["d1","d2"]
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> d["name"].append("d3")
>>> d
{'name': ['d1', 'd2', 'd3']}
>>> c
{'name': ['d1', 'd2', 'd3']}
>>> dc
{'name': ['d1', 'd2']}
  • fromkeys
    fromkey方法使用给定的键建立新的字典,每个键都对应一个默认的值None
>>> {}.fromkeys(["name","age"])
{'name': None, 'age': None}
  • get
    get方法访问字典项,如果试图访问字典中不存在的键时,没有任何异常,得到了None值,也可以自定义默认值
>>> d.get("name")
['d1', 'd2', 'd3']
>>> print(d.get("age"))
None
>>> print(d.get("age","NA"))
NA
  • item和iteritems
    item方法将字典所有项以列表的形式返回,列表中的每一项都表示为键值对的形式
    iteritems方法的作用大致相同,但会返回一个迭代器对象而不是列表
  • keys和iterkeys
    key方法将字典中的键以列表形式返回,而iterkeys则返回针对键的迭代器
  • pop
    pop方法用来移除给定键的值,返回此值
>>> x
{'x1': '1', 'x2': '2', 'x3': '3'}
>>> x.pop("x2")
'2'
>>> x
{'x1': '1', 'x3': '3'}
  • popitem
    popitem方法类似于list.pop,后者会弹出列表的最后一个元素,但不同的时,popitem弹出随机的项,因为字典并没有”最后的元素“
  • setdefault
    setdefault方法与get类似,都能获取给定键的值。除此之外,setdefault还能在字典不含有给定键的情况下设定相应的键值。
>>> d = {}
>>> d.setdefault("name","NA")
'NA'
>>> d
{'name': 'NA'}
>>> d["name"] = "d1"
>>> d.setdefault("name")
'd1'
  • update
    update方法可以传入一个字典项更新另外一个字典
>>> d = {"name":"d1","age":"22"}
>>> c = {"name":"c1"}
>>> d.update(c)
>>> d
{'name': 'c1', 'age': '22'}
  • values和itervalues
    values方法以列表的形式返回字典中的值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章