目录

一、创建字典的方式

1. 通过{}来创建字典

2. 通过dict()来创建字典

3. 通过zip()映射函数来创建字典 

4. 通过二维元组列表创建

5. 通过字典推导式创建

6. 通过fromkeys创建值为空的字典

7. 更新合并字典

8. 其他方式 

二、提取字典的键、值及字典的遍历

1. 取出该字典所有的键

2. 取出该字典所有的值

3. 取出字典某个键的值

4. 安全地取出字典某个键的值get()

5. 字典的setdefault()方法

6. 遍历字典

三、添加、修改和删除字典元素

1、添加

(1) 直接添加

(2) update方法

(3) setdefault方法(可以不改变键的原值,而是增加值)

2、修改字典值

3、 删除字典的键值对

(1) del函数 

(2) pop函数

(3) clear函数


一、创建字典的方式

1. 通过{}来创建字典

#创建空字典
a = {}  

# 直接赋值创建。注意key都要加引号
a = {'name':'张三','age':18,'address':"江苏"}

2. 通过dict()来创建字典

#创建空字典
a = dict()

# 不是key:value形式,key也没有引号,而是key = value
a = dict(name='张三',age=18,address="江苏")

# 键值对在列表中写成元组的形式
a = dict([('name',"张三"),("age",18),("address","江苏")])

3. 通过zip()映射函数来创建字典 

# 先写key,再写value,
# key和value都存入列表或元组中,不是字典中
a = ('name','age','address')
b = ['张三',18,"江苏"]
d = dict(zip(a,b)) # zip(b,a)键值对反过来

4. 通过二维元组列表创建

list = [('spam', 1), ('egg', 2), ('bar', 3)]
dic = dict(list)
print(dic)
>>>{'bar': 3, 'egg': 2, 'spam': 1}

5. 通过字典推导式创建

dic = {i:2*i for i in range(3)}
print(dic)
>>>{0: 0, 1: 2, 2: 4}

k = ['key1', 'key2', 'key3']
v = ['value1', "value","value3"]
dic = { i:v[k.index(i)] for i in k }  #键为i,i in k;值为v,通过i在k中的索引来映射关联取值
print(dic)
>>>{'key1':'value1','key2':'value2','key3':'value3'}

6. 通过fromkeys创建值为空的字典

e = dict.fromkeys(['name','age','address'])
print(e)
>>>{'name': None, 'age': None, 'address': None}

7. 更新合并字典

字典 update() 函数把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里。

#update更新合并字典
dict1 = {'Name': 'Runoob', 'Age': 7}
dict2 = {'Name': 'Quasi' } 
dict1.update(dict2) #2个字典有相同的键,则更新字典
print ("更新字典dict: ", dict1)
>>>更新字典dict:  {'Name': 'Quasi', 'Age': 7}

dict3 = {'Sex': 'female' } 
dict1.update(dict3) #2个字典有不同的键,则合并字典
print ("合并字典dict: ", dict1) 
>>>合并字典dict:  {'Name': 'Runoob', 'Age': 7, 'Sex': 'female'}

#合并字典
k = {'key1':'value1', 'key2':"value2"}
v = {'key3':"value3"}
dic = dict(k,**v)
print(dic)
>>>{'key1':'value1', 'key2':,value2','key3':'value3'}

8. 其他方式 

#将列表切片,然后通过映射函数创建
list = ['x', 1, 'y', 2, 'z', 3]
dic = dict(zip(list[::2], list[1::2]))  
print(dic)
>>>{'y': 2, 'x': 1, 'z': 3}

 

二、提取字典的键、值及字典的遍历

1. 取出该字典所有的键

- key_list = my_dict.keys() 返回的是列表

key_list = my_dict.keys()
print(list(key_list))

 - 使用内置函数set(), 将其转换为集合数据结构. 集合,其实可以理解为只有键的字典:

item = {"name": "lowman", "age": 27}
data = set(item)
print(data)

2. 取出该字典所有的值

- value_list = my_dict.values() 返回的是列表

my_dict = dict(name="lowman", age=45, money=998, hourse=None)
value_list = my_dict.values() 
print(list(value_list))

注意:在python2环境中这两个方法返回的是列表,但是在python3环境下返回的却是迭代器,如果希望通过下标直接取到需要的元素,可以通过list()方法将其先转化为列表,再进行取值.

3. 取出字典某个键的值

- value = my_dict["key"] 这样取值的话如果没有这个键就会抛出异常

4. 安全地取出字典某个键的值get()

- value = my_dict.get("key") 这样取值的话如果没有这个键就返回None。原字典不变

- value = my_dict.get("key", 默认值)也可以自定义一个默认值进行返回

5. 字典的setdefault()方法

返回字典键的值,若键不存在则添加键。和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。如果存在,返回字典中键的值,不会修改字典的值。

a='aabbbccccddddd111111222'
dic=dict()

for i in set(a):
    dic.setdefault(a.count(i),[]).append(i) 
    #向字典dic中添加键,并设默认值为空列表。向值列表中添加值,
    #相当于给键增加值。等同于以下两行代码:
    #val=dic.setdefault(a.count(i),[]) #获取字典键的值,不存在则添加键,默认值为空列表
    #val.append(i)  #向键的值中添加元素
print(dic)
print('出现最多次数:%d次,是字符%s'%(max(dic),dic[max(dic)]))

setdefault()和get()的区别:

setdefault 如果不存在会在原字典里添加一个 key:default_value 并返回 default_value。

get 找不到 key 的时候不会修改原字典的键,只返回 default_value。

若要修改字典 dic.setdefault(key,default_value) 等同于 dic[key] = dic.get(key,default_value)。

6. 遍历字典

- 遍历字典的键

for item in my_dict:
    print(item)   #取出的是字典的键

for key in my_dict.keys():
    print(key)

- 遍历字典的值

for value in my_dict.values():
    print(value)

- 使用字典对象的items()

for item in my_dict.items():
  print(item)  #返回值为可遍历的“键-值对”元组列表

for key, value in my_dict.items():
  print(key,value)  #直接获取到每个键和值

三、添加、修改和删除字典元素

1、添加

-方法一:直接添加,给定键值对

-方法二:使用update方法

-方法三:使用setdefault方法

(1) 直接添加

#直接添加键值对
dictionary[key]=value #键不存在时,则添加;键存在时,则修改;

(2) update方法

#update方法添加、修改字典元素

#传入一个字典
d.update({'k1':1,'k2':2}) #字典d中不存在k1键,则添加;否则,修改。

#传入关键字
d.update(k1=1,k2=2)

#传入一个包含元组的列表
d.update([(k1,1),(k2,2)]) #在字典d中添加k1,k2键值对

(3) setdefault方法(可以不改变键的原值,而是增加值)

#setdefault方法添加键的值
d.setdefault(key,[]).append(listname[i]) #添加键key,值为列表。向值列表中添加值。

2、修改字典值

#修改字典值
d[key]=value #键存在,则修改值;不存在,则添加键值对

3、 删除字典的键值对

-方法一:del函数

-方法二:pop函数

-方法三:clear函数

(1) del函数 

my_dict = {"name":"lowman", "age":12}
del my_dict["name"]  #这样就把整个键值对给删除掉了

(2) pop函数

#使用pop函数,并返回值
aa={'人才': 60, '英语': 'english', '价格': 100, 'hhh': 'gogogo'}
vv = aa.pop('人才')
print(vv) 
>>>60
print(aa) 
>>>{'英语': 'english', '价格': 100, 'hhh': 'gogogo'}

(3) clear函数

# clear方法,删除所有
aa.clear()
print(aa) # {},为空