Python字典的items(), keys(), values()都返回一个list
# items()方法返回字典的(键,值)元组对的列表

python字典是可变的,并且可以存储任意数量的Python对象,包括其他容器类型、另一个容器类型。
字典包括键对(称为项目)及其相应的值。
Python字典也被称为关联数组或哈希表。

字典={'键':值} 例如

dict_list1 = {'Name':'lzn','Age':18,'Sex':'boy'}

# 为了方便更直观,建议格式化,呵呵

dict_list1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy'
}

空字典

dic = {}

每个键的值用冒号(:),一个项目用逗号分割,整个事件包含在大括号分割
键在字典里是唯一的,值却可能不是。字典的值可以是任何类型的,键必须是不可变的数据类型,例如字符串、数字或者元组。

(1)访问字典元素,用方括号里的键,获取它的值。举例:

dict_list1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy'
}

print("dict_list1['Name']:",dict_list1['Name'])
print("dict_list1['Age']:",dict_list1['Age'])
执行结果:
dict_list1['Name']: lzn
dict_list1['Age']: 18

(2)访问不存在的键,会报KeyError的错,如下:

dict_list1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy'
}
print(dict_list1['aaa'])
执行结果:
Traceback (most recent call last):
  File "E:/lznmvp/1dict.py", line 13, in 
    print(dict_list1['aaa'])
KeyError: 'aaa'

可以通过添加一个新的条目或者已经存在的键值对,如下:

dict1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy'
}

dict1['Name'] = 'linzhennan'
dict1['Height'] = 175
print("dict1['Name']:",dict1['Name'])
print(dict1)
执行结果:
dict1['Name']: linzhennan
{'Name': 'linzhennan', 'Sex': 'boy', 'Age': 18, 'Height': 175}

(1)删除单个字典

dict1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy'
}
del dict1['Name']
print(dict1)
执行结果:
{'Sex': 'boy', 'Age': 18}

(2)清除字典全部内容

dict1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy'
}
dict1.clear()
print("dict1 =",dict1)
执行结果:
dict1 = {}

(3)删除整个字典
删除字典直接用del,但是会发生异常,因为已经被删除已经不存在字典了。

dict1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy'
}
del dict1
print(dict1)
执行结果:
Traceback (most recent call last):
  File "E:/lznmvp/1dict.py", line 10, in 
    print(dict1)
NameError: name 'dict1' is not defined

字典值没有限制,可以是任何python对象,但是键不可以。
需要注意两点:
①一个键不能对应多个values,有重复键的话,以最后一个为准,如:

dict1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy',
    'Name':'last'
}
print(dict1['Name'])
执行结果:
last

②键的内容是不可变的,可以使用字符串、数字或者元组,但是下面这种不行:

dict1 = {
    ['Name']:'lzn',
    'Age':18,
    'Sex':'boy',
    'Name':'lzn1',
}
print(dict1['Name'])
执行结果:
Traceback (most recent call last):
  File "E:/lznmvp/1dict.py", line 7, in 
    'Name':'lzn1',
TypeError: unhashable type: 'list'

len(dict)字典的长度。这将等同于在字典中的项数(元素的个数)

dic1 = {'Name': 'lzn', 'Age': 19};
print(len(dic1))
以上代码返回结果:
2

type(variable)
返回传递变量的类型。如果传递变量是字典,那么它将返回一个字典类型

dic1 = {'Name': 'lzn', 'Age': 19};
list1 = [11,22,33,44]
str1 = 'lzn is a boy'
print(type(dic1))
print(type(list1))
print(type(str1))
以上代码返回结果:
<class 'dict'>
<class 'list'>
<class 'str'>

str(dict)
返回字符串表示形式

dic1 = {'Name': 'lzn', 'Age': 19};
a = str(dic1)
print(a)
print(type(a))
以上代码返回结果:
{'Age': 19, 'Name': 'lzn'}
<class 'str'>

1 dict.copy()
此方法返回字典的浅拷贝。

例:
dict_list1 = {
    'Name':'lzn',
    'Age':18,
    'Sex':'boy'
}
print(dict_list1.copy())
代码返回如下:
{'Sex': 'boy', 'Age': 18, 'Name': 'lzn'}

2 dict.fromkey()
语法:
dict.fromkeys(seq[, value]))
创建一个新的字典,设置键为seq 和值为value
seq -- 这是将用于字典的键准备的值的列表。
value -- 这是可选的,如果提供的话则值将被设置为这个值

代码如下:

lzn = ('name', 'age', 'sex')
s1 =dict.fromkeys(lzn)
s2 = dict.fromkeys(lzn,'lzn')
print(s1,type(s1))
print(s2,type(s2))

返回结果:
{'sex': None, 'name': None, 'age': None} <class 'dict'>
{'sex': 'lzn', 'name': 'lzn', 'age': 'lzn'} <class 'dict'>

3 dict.get(key, default=None)
对于键key,返回键,如果不是在字典的值或默认
该方法返回一个给定键的值。如果键不可用,则返回默认值为None。
例子:

dict1 = {
    'name':'lzn',
    'age':18,
    'sex':'boy'
}

print(dict1.get('name'))			# 能找到key,显示对应值
print(dict1.get('name','change'))	# 查到key,则显示原有对应值
print(dict1.get('key'))				# 查不到,返回None
print(dict1.get('key','no'))		# 查不到,返回设置的值

返回结果:
lzn
lzn
None
no

4 dict.items
返回一列表,内容是元组(键、值)对
例子:

dict1 = {
    'name':'lzn',
    'age':18,
    'sex':'boy'
}
print(dict1.items())

返回结果:
dict_items([('name', 'lzn'), ('sex', 'boy'), ('age', 18)])

5 dict.keys()
返回字典的所有可用的键的列表
例子:

dict1 = {
    'name':'lzn',
    'age':18,
    'sex':'boy'
}
print(dict1.keys())
返回结果:dict_keys(['sex', 'name', 'age'])

6 dict.pop(key)
删除指定键,返回被删除的对应的值
例子:

dict1 = {
    'name':'lzn',
    'age':18,
    'sex':'boy'
}
result = dict1.pop('name')
print(result,',new_dict:',dict1)
返回结果:
lzn ,new_dict: {'sex': 'boy', 'age': 18}

7 dict.popitem()
随机删除键值对,返回被删除的键值对
例:

dict1 = {
    'name':'lzn',
    'age':18,
    'sex':'boy'
}
result = dict1.popitem()
print(result,',new_dict:',dict1)
返回结果:
('age', 18) ,new_dict: {'sex': 'boy', 'name': 'lzn'}

8 dict.setdefault(key, default=None)
类似get(),但会设定dict[key]=default如果key不是已经在于字典中,也就是设置默认的键值对
例:

dict1 = {
    'name':'lzn',
    'age':18,
    'sex':'boy'
}
result = dict1.setdefault('new_name','zn')
print(result,',new_dict:',dict1)
返回结果:
zn ,new_dict: {'age': 18, 'new_name': 'zn', 'name': 'lzn', 'sex': 'boy'}

9 dict.update(dict2)
更新(增加)字典dict2的键值对到字典中
例:

dict1 = {
    'name':'lzn',
    'age':18,
    'sex':'boy'
}
dict2 = {'new':'zn'}
result = dict1.update(dict2)
print(dict1)
返回结果:
{'name': 'lzn', 'age': 18, 'new': 'zn', 'sex': 'boy'}

10 dict.values()
返回字典dict的值列表
例:

dict1 = {
    'name':'lzn',
    'age':18,
    'sex':'boy'
}
print(dict1.values())
返回结果:
dict_values(['lzn', 18, 'boy'])