字典接触和使用

内容:

  • 字典基础知识
  • 字典基本操作

 

一、字典基础知识

1.定义

字典(Dict),是可变的无序集合,同时也是一种以键值对为基本元素的可以存储各种数据类型的集合,用大括号({ })表示字典的开始和结束,元素之间用逗号( , )分隔。

2.键值对

由键(Key)和值(Value)组成,中间用冒号( : )隔开,字典是属于一对一映射关系的数据类型

>>> dic={'a':1, 'b':'hello', 'c':'中国'}
>>> len(dic)
3

二、字典基本操作

1.字典的基本方法

  • clear:           # 字典清空
  • copy:           # 复制生成另外一个字典
  • fromkeys:    # 使用给定的键生成新的字典,每个键默认对应的值为None
  • get:              # 根据指定键,返回指定值,访问键不存在时,返回None
  • items:          # 以元组数组的形式返回字典中的元素
  • keys:           # 以类似列表的形式返回字典中的键
  • values:        # 以类似列表的形式返回字典中的值
  • pop:            # 删除指定键的元素,并返回指定键对应的值
  • popitem:     # 随机删除元素,并返回元素
  • setdefault:  # 当字典中键不存在时,设置键值对;当键存在时,获取相应键对应的值
  • update:       # 利用一个字典更新另外一个字典

注意:

(1)字典内部结构由哈希表构成,通过唯一的键访问对应的值,所以字典对象没有提供排序功能,字典数据类型是无序的。

(2)字典的元素(Key)不能重复(重复的默认只认最后一个值)

2.示例(字典的增删查改、遍历)

(1)通过 setdefault(obj1,obj2) 增加元素(update()方法也是可以增加元素的)

>>> dit={'a':3, 'b':2}
>>> print(dit)
{'a': 3, 'b': 2}
>>> dit.setdefault('a')        # 只传一个参数时,默认该参数为Key,元素存在时返回对应值,不存在是设置该值为None
3
>>> dit.setdefault('a',10)     # 元素存在,返回值3
3
>>> print(dit)
{'a': 3, 'b': 2}
>>> dit.setdefault('c',10)     # 元素不存在,增加该元素 
10
>>> print(dit)
{'a': 3, 'b': 2, 'c': 10}

(2)利用 del 函数、pop() 方法、popitem() 方法删除(三个方法若是对不存在的元素进行操作,都将报错)

>>> dit={'a':1, 'b':2, 'c':3}
>>> del(dit['a'])                                           # 使用del删除指定元素
>>> print(dit)
{'b': 2, 'c': 3}
>>> dit={'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
>>> del(dit['a'])
>>> print(dit)
{'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
>>> dit.pop('b')                                            # 使用pop删除指定元素并返回改元素值 
2
>>> print(dit)
{'c': 3, 'd': 4, 'e': 5, 'f': 6}
>>> dit.pop('c',4)                                          # 参数 ‘值’ 可加可不加,但是 ‘键’ 一定要加
3
>>> print(dit)
{'d': 4, 'e': 5, 'f': 6}
>>> dit.popitem()                                           # 使用popitem随机删除一个元素,并返回该元素(元组)
('f', 6)
>>> del(dit)                                                # 使用del删除整个字典
>>> print(dit)
Traceback (most recent call last):
  File "<pyshell#40>", line 1, in <module>
    print(dit)
NameError: name 'dit' is not defined
>>> 

(3)通过 Key 或者 get() 方法查找字典值

>>> dit={'a':1, 'b':2, 'c':3}
>>> dit['b']
2
>>> dit['d']
Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    dit['d']
KeyError: 'd'
>>> dit.get('b')
2
>>> dit.get('d')
>>> 
>>> # 注意:区别在于用Key查找,若元素不存在,会报错,而用get()方法不会报错,而是显示空值

(4)通过赋值或者 update() 方法对字典进行修改(或增加)

>>> dit1={'a':1, 'b':2, 'c':3}
>>> dit2={'a':4, 'c':10, 'd':7}
>>> dit1.update(dit2)                          # 通过update()更新字典
>>> print(dit1)
{'a': 4, 'b': 2, 'c': 10, 'd': 7}
>>> dit1.update({'e':9})                       # 通过update()增加元素
>>> print(dit1)
{'a': 4, 'b': 2, 'c': 10, 'd': 7, 'e': 9}
>>> dit1['e':16]
Traceback (most recent call last):
  File "<pyshell#56>", line 1, in <module>
    dit1['e':16]
TypeError: unhashable type: 'slice'
>>> dit['e']=16
>>> print(dit1)
{'a': 4, 'b': 2, 'c': 10, 'd': 7, 'e': 9}
>>> dit1['f']=14                               # 通过赋值增加元素或修改元素值
>>> print(dit1) 
{'a': 4, 'b': 2, 'c': 10, 'd': 7, 'e': 9, 'f': 14}
>>> 

(5)a.通过 item() 遍历字典所有键值对

>>> dit={'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
>>> for everyone in dit.items():
    print(everyone)
('a', 1)
('b', 2)
('c', 3)
('d', 4)
('e', 5)
('f', 6)

b.通过 key() 方法遍历所有键(此处的key()是可以不加的,得到的结果一样)

  >>> for key in dit.keys():
     print(key)

a
b
c
d
e
f

>>> for key in dit:
    print(key)    
a
b
c
d
e
f

c.通过已获取的key 遍历所有值或者使用 values() 方法遍历字典值

>>> for keys in dit:
    print(dit[keys])

1
2
3
4
5
6
>>> for value in dit.values():
    print(value)

1
2
3
4
5
6

 3.字典的其他操作

(1)in 成员操作

>>> dit={'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
>>> if 'a' in dit:
    print("a in dit")

(2)clear() 方法

>>> dit={'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
>>> dit.clear()
>>> print(dit)
{}
>>> 

(3)copy() 方法

>>> dit1={'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
>>> dit2=dit1.copy()
>>> print(dit2)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
>>> id(dit1)
2586168101264
>>> id(dit2)
2586169142800
>>> dit3=dit1              # 直接通过赋值和copy()方法是有区别的,copy()方法属于深度赋值,和原来的互不干扰
>>> id(dit3)
2586168101264
>>> 

(4)fromkeys() 方法

>>> dit1={'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
>>> dit2=dit1.fromkeys(['g','h','i'])
>>> print(dit2)
{'g': None, 'h': None, 'i': None}
>>> print(dit1)
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
>>>   # 可以看出,fromkeys()方法得到的结果和原始的字典无关,都是根据提供的键生成一个新的字典
posted @ 2019-09-12 18:08  幾米的小小世界  阅读(277)  评论(0编辑  收藏  举报