Python字典

Posted colin1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python字典相关的知识,希望对你有一定的参考价值。

      上篇博客已经介绍了python的列表,本文介绍字典,字典也是python的基础数据类型之一。字典在python中关键字用dict表示。字典可以存储大量的数据,以及关系型数据。同样地,它也是python中唯一的映射类的数据类型。

         数据类型分类有多种,而本文中将数据分类只讨论可变不可变数据类型:

         可变的(不可哈希)数据类型:list , dict, set

         不可变的(可哈希)数据类型:str, int, bool, tuple

字典以“键”,“值”, 即键值对得形式存在,其形象表示为: 

 dic  =  {‘键1‘:‘值1’,‘键2‘:‘值2’,...,‘键n‘:‘值n’}

      字典得键必须是不可变的数据类型。(在工作中,键通常都是由数字,或者字符串(str)组成。    

      字典的值可以是任意数据类型,如:str,dict,list,tuple 等。

字典的优点:

1. 字典可以存储大量的数据与关系型数据,

2. 字典查询速度快。

注: python3.5之前包括3.5版本,字典都是无序的,而从python3.6开始,字典是有序的。

字典的常用操作(增,删,改,查):

字典增添方法:

字典增添方法有两种:

     第一种方法为,直接对键添加内容,若原字典内有key与value,那么就直接对此key对应的内容进行修改,若没有此key则添加key与对应的值到字典中,例:

1 dic ={name: colin, age: 27}
2 dic[name] = Jenny    # {‘name‘: ‘Jenny‘, ‘age‘: 27}    改
3 print(dic)
4 dic[sex] = 
5 print(dic)    # {‘name‘: ‘colin‘, ‘age‘: 27, ‘sex‘: ‘男‘}   新增

第二种方法为,使用setdefault()方法,该方法表示在字典后面添加新的键值对。几种表示方法与用法表示如下:

1 dic = {name: colin, age: 27}
2 dic.setdefault(sex)
3 print(dic.setdefault(sex))             #  None
4 print(dic)           # {‘name‘: ‘colin‘, ‘age‘: 27, ‘sex‘: None}
5 dic.setdefault(name,jenny)
6 print(dic)           # {‘name‘: ‘colin‘, ‘age‘: 27}                 不做修改
7 dic.setdefault(sex,)
8 print(dic)           # {‘name‘: ‘colin‘, ‘age‘: 27, ‘sex‘: ‘男‘}

字典删除方法:

字典的删除方法与列表一样有四种表示方法,但有所区别。其方法有:pop(), clear(), popitem(), del() 四种方法。

pop()方法举例

 1 dic = {name: colin, age: 27}
 2 dic.pop(name)
 3 print(dic)     # {‘age‘: 27}
 4 dic.pop(name1)
 5 print(dic)    # 报错   无 ‘name1‘
 
 7 print(dic.pop(name1, None))   # None
 8 dic.pop(name1, None)
 9 print(dic)    # 不报错   {‘name‘: ‘colin‘, ‘age‘: 27}
 
11 print(dic.pop(name1, 没有此键...))  # 没有此键...
12 print(dic)    # {‘name‘: ‘colin‘, ‘age‘: 27}

   clear()方法举例

1 dic = {name: colin, age: 27}
2 dic.clear()    # 清空
3 print(dic)     # {}

popitem()方法举例

1 dic = {name: colin, age: 27}
2 dic.popitem()
3 print(dic.popitem())   # (‘name‘, ‘colin‘)    返回一个元组
4 print(dic)    # {‘name‘: ‘colin‘}   默认删除最后一个键值对

del方法举例

1 dic = {name: colin, age: 27}
2 del dic     # 删除整个字典
3 print(dic)   # 报错
4 del dic[name]    # {‘age‘: 27}   通过删除键来删除键值对
5 print(dic)

字典的改方法:

字典的改方法通常有两种,一种是在增里面介绍了,与前面类似,第二种方法为update()方法,其使用方法在下列例子中说明;

1 dic = {name: colin, age: 27, sex: male}
第一种
3 dic[age] = 25  # {‘name‘: ‘colin‘, ‘age‘: 25, ‘sex‘: ‘male‘}
4 print(dic)
第二种  update()
6 dic = {name: colin, age: 27, sex: male}
7 dic2 = {name: Jenny, weight: 75}
8 dic.update(dic2)   # 将dic2中的所有键值对覆盖并添加到dic中,dic2不变
9 print(dic)       # {‘name‘: ‘Jenny‘, ‘age‘: 27, ‘sex‘: ‘male‘, ‘weight‘: 75}

此外,update()还有添加若干键值对的方法,如:

1 dic2 = {name: Jenny, weight: 75}
2 # dic2.update(a = ‘222‘)
3 # print(dic2)        # {‘name‘: ‘Jenny‘, ‘weight‘: 75, ‘a‘: ‘222‘}
4 dic2.update(a = 222, b = 666)
5 print(dic2)       # {‘name‘: ‘Jenny‘, ‘weight‘: 75, ‘a‘: ‘222‘, ‘b‘: ‘666‘}

字典的查询方法:

字典的查询方法有get() ,keys(), value(), items()几种方法,其使用方法如下面代码:

get()方法:

1 dic = {name: colin, age: 27, sex: male}
2 print(dic.get(name))    # colin
3 print(dic.get(name1))    # None
4 print(dic.get(name1, 没有此键...))    # 没有此键...

keys()方法:

keys() 打印所有键, 其类型类似于列表的容器。

1 dic = {name: colin, age: 27, sex: male}
2 print(dic.keys(), type(dic.keys()))  # dict_keys([name, age, sex]) <class dict_keys>
3 l1 = list(dic.keys())     # [‘name‘, ‘age‘, ‘sex‘]  将类似列表的容器转化为列表类型
4 print(l1)
5 for key in dic.keys():   # 发现dic.key()可以遍历
6     print(key)

value()方法:

value()  打印所有键值 ,其类型类似于列表的容器。

1 dic = {name: colin, age: 27, sex: male}
2 print(dic.values())   # dict_values([‘colin‘, 27, ‘male‘])
3 print(list(dic.values()))  # [‘colin‘, 27, ‘male‘]

items()方法

items() 按元组形式打印键值对。

1 dic = {name: colin, age: 27, sex: male}
2 print(dic.items())    # dict_items([(‘name‘, ‘colin‘), (‘age‘, 27), (‘sex‘, ‘male‘)])
3 print(list(dic.items()))  # [(‘name‘, ‘colin‘), (‘age‘, 27), (‘sex‘, ‘male‘)]
4 for i in dic.items():  #  (‘name‘, ‘colin‘) (‘age‘, 27) (‘sex‘, ‘male‘)  即按元组形式打印键值对
5     print(i)
6 for k, v in dic.items():  #  name colin   age 27   sex male  # k,v分别代表键与值
7     print(k, v)

分别赋值:

 1 a, b = 10, 20
 2 print(a, b)   # 10 20
 3 a, b = [10, 20]
 4 print(a, b)   # 10 20
 5 a, b = [(1, 2), (3, 4)]
 6 print(a, b)   # (1, 2) (3, 4)
 7 a = 10
 8 b = 20
 9 a, b = b, a   # 赋值操作,先计算右边的赋值运算,再算左边的赋值操作
10 print(a, b)   # 20 10

每日一练:

 1 dic = {name_list: [王双, alex, 孙飞, taibai],
 2        1: {name: taibai, age: 18, sex: },
 3        (1, 2): [100, {ip: 192.168.1.1, port: 3306}]
 4        }
 5 # 1,给 name_list对应的列表追加一个值: 司徒大人.
 6 dic[name_list].append(司徒大人)
 7 print(dic)
 8 # 2,将name_lsit对应的alex 变成全部大写.
 9 dic[name_list][1] = dic[name_list][1].upper()
10 print(dic)
11 # 3, 将1对应的字典添加一个键值对: weight : 75
12 dic[1].setdefault(weight, 75)
13 print(dic)
14 # 4,将1 对应的字典的name键对应的名字taibai 换成alex
15 dic[1][name] =alex
16 print(dic)
17 # 5,将 {‘ip‘: ‘192.168.1.1‘, ‘port‘: 3306} 次字典的port键值对删除.
18 dic[(1, 2)][1].popitem()
19 print(dic)

 

以上是关于Python字典的主要内容,如果未能解决你的问题,请参考以下文章

Python snippet(代码片段)

Python代码阅读(第26篇):将列表映射成字典

Python代码阅读(第40篇):通过两个列表生成字典

Python代码阅读(第38篇):根据谓词函数和属性字符串构造判断函数

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段