基础数据类型-dict

字典Dictinary是一种无序可变容器,字典中键与值之间用“:”分隔,而与另一个键值对之间用","分隔,整个字典包含在{}内: dict1 = {key1:value1, key2:value2} 

键必须是唯一的,而值不必,创建时如果同一个键被赋值两次,后一个值会被记住

键必须是不可变类型,如字符串,数字,元组(不能是列表),但值可以取任何类型,也可以是自定义类,比如: dict1 = {'k1':'v1', 1:2, (1,2):[1,2]} 

(1)访问字典元素:

键放入中括号内访问字典元素: print(dict1['k1']) 

(2)添加,修改字典元素:

1 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
2 dict['Age'] = 8;        # 更新 Age
3 dict['School'] = "CSU"  # 添加信息

(3)删除字典元素:

1 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
2 del dict['Name'] # 删除键 'Name'
3 dict.clear()     # 清空字典
4 del dict         # 删除字典

(4)字典内置函数len(), str(), type:

1 dict2 = {'Name': 'Joshua', 'Age': 7, 'Class': 'Math'}
2 print("length of dict2:", len(dict2)) #计算字典元素个数,即键的总数。
3 print(str(dict2)) #输出字典以可打印的字符串表示
4 print(type(dict2)) #返回输入的变量类型,如果变量是字典就返回字典类型。
1 length of dict2: 3
2 {'Age': 7, 'Name': 'Joshua', 'Class': 'Math'}
3 <class 'dict'>
Result

(5)字典常用内置方法:

-get()

1 name = dict2.get('Name') #返回指定键的值,如果值不在字典中返回default值
2 print("name:", name)

-item(),keys(),values()

1 print(dict2.items())
2 for item in dict2.items(): #以列表返回可遍历的(键, 值) 元组数组
3     print(item, type(item))
4 for key in dict2.keys():  #以列表返回一个字典所有的键
5     print(key)
6 for value in dict2.values(): #以列表返回字典中的所有值
7     print(value)
Code
1 dict_items([('Name', 'Joshua'), ('Class', 'Math'), ('Age', 7)])
2 ('Name', 'Joshua') <class 'tuple'>
3 ('Class', 'Math') <class 'tuple'>
4 ('Age', 7) <class 'tuple'>
5 Name
6 Class
7 Age
8 Joshua
Result

-clear(),copy()

1 #clear(),copy()
2 dict3 = dict2.copy() #返回一个字典的浅复制
3 print(id(dict2), dict2)
4 print(id(dict3), dict3)
5 dict3.clear() #清空字典内所有元素
6 print(dict3)
Code
1 4301648 {'Age': 7, 'Class': 'Math', 'Name': 'Joshua'}
2 4301688 {'Age': 7, 'Class': 'Math', 'Name': 'Joshua'}
3 {}
Result

最后看以下dict类的定义:

 1 class dict(object):
 2     """
 3     dict() -> new empty dictionary
 4     dict(mapping) -> new dictionary initialized from a mapping object's
 5         (key, value) pairs
 6     dict(iterable) -> new dictionary initialized as if via:
 7         d = {}
 8         for k, v in iterable:
 9             d[k] = v
10     dict(**kwargs) -> new dictionary initialized with the name=value pairs
11         in the keyword argument list.  For example:  dict(one=1, two=2)
12     """
13     def clear(self): # real signature unknown; restored from __doc__
14         """ D.clear() -> None.  Remove all items from D. """
15         pass
16 
17     def copy(self): # real signature unknown; restored from __doc__
18         """ D.copy() -> a shallow copy of D """
19         pass
20 
21     @staticmethod # known case
22     def fromkeys(*args, **kwargs): # real signature unknown
23         """ Returns a new dict with keys from iterable and values equal to value. """
24         pass
25 
26     def get(self, k, d=None): # real signature unknown; restored from __doc__
27         """ D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None. """
28         pass
29 
30     def items(self): # real signature unknown; restored from __doc__
31         """ D.items() -> a set-like object providing a view on D's items """
32         pass
33 
34     def keys(self): # real signature unknown; restored from __doc__
35         """ D.keys() -> a set-like object providing a view on D's keys """
36         pass
37 
38     def pop(self, k, d=None): # real signature unknown; restored from __doc__
39         """
40         D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
41         If key is not found, d is returned if given, otherwise KeyError is raised
42         """
43         pass
44 
45     def popitem(self): # real signature unknown; restored from __doc__
46         """
47         D.popitem() -> (k, v), remove and return some (key, value) pair as a
48         2-tuple; but raise KeyError if D is empty.
49         """
50         pass
51 
52     def setdefault(self, k, d=None): # real signature unknown; restored from __doc__
53         """ D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """
54         pass
55 
56     def update(self, E=None, **F): # known special case of dict.update
57         """
58         D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.
59         If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]
60         If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v
61         In either case, this is followed by: for k in F:  D[k] = F[k]
62         """
63         pass
64 
65     def values(self): # real signature unknown; restored from __doc__
66         """ D.values() -> an object providing a view on D's values """
67         pass
Class Dict
原文地址:https://www.cnblogs.com/z-joshua/p/6323058.html