Python字典的用法总结

字典定义:每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号,分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

一、创建字典的几种方法总结

(1)创建空字典 

dic = {}
type(dic)
# <type 'dict'>

(2)使用{}花括号方法,直接赋值创建字典

thisdict =	{
  "brand": "Porsche",
  "model": "911",
  "year": 1963
}
print(thisdict)

(3)使用dict()函数和关键字的方法创建字典

thisdict = dict(spam = 1, egg = 2, bar =3)
print(thisdict)

# {'spam': 1, 'egg': 2, 'bar': 3}

 (4)使用dict()函数和二元组的列表创建

lis = [('spam', 1), ('egg', 2), ('bar', 3)]
thisdict = dict(lis)
print(thisdict)
# {'bar': 3, 'egg': 2, 'spam': 1}

(5)dict和zip结合创建

dic = dict(zip('abc', [1, 2, 3]))
print(dic)
# {'a': 1, 'c': 3, 'b': 2}

 (6)通过字典推导式创建

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

(7)通过dict.fromkeys()创建,通常用来初始化字典, 设置value的默认值

dic = dict.fromkeys(range(3), 'x')
print(dic)
# {0: 'x', 1: 'x', 2: 'x'}

(8)其他方法 

lis = ['x', 1, 'y', 2, 'z', 3]
dic = dict(zip(lis[::2], lis[1::2]))
print(dic)
# {'x': 1, 'y': 2, 'z': 3}


lis[::2]
# ['x', 'y', 'z']
lis[1::2]
# [1, 2, 3]

二、查找字典元素
    有两种方式:
        a.  dict[key] -> 若 key 值不存在,会报 KeyError 的错误 ; 若 key 值存在,返回 key 所对应的 value 值

c = {'语文': 90, '数学': 90, '英语': 75}
print(c['英语'])  
# 75

​        b.  dict.get(key, default) -> 若 key 不存在不会 报错, 会返回 default

c = {'语文': 90, '数学': 90, '英语': 75}
print(c.get('英语'))
print(c.get('没有'))

# 75
# None

       c.setdefault()根据键找到值,如果有这个键就返回值,如果没有就返回default参数,并添加新的键值对。

c = {'语文': 90, '数学': 90, '英语': 75}
c.setdefault('英语',"100")
print(c)
c.setdefault('物理',"100")
print(c)

# {'语文': 90, '数学': 90, '英语': 75}
# {'语文': 90, '数学': 90, '英语': 75, '物理': '100'}

      总结:dict 字典根据 key 来查看 dict 中的数据 就相当于 list 中 要根据 index 来看其,相对应的数据。但是 dict 是无序的,所以导致没有 index 这一说法,只能根据 key

        d.嵌套字典的查找元素

#字典的嵌套
d={'成绩':{'语文': 90, '英语': 75, '物理': '100'}}
print(d['成绩']['物理'])
#嵌套字典,嵌套序列
d={'成绩':['语文', 90, '英语'], 75:['物理', '100']}
print(d[75][0])
100
物理

三、获取字典的键,值,键值对

dict.items() 、dict.keys() 、dict.values()是字典的视图对象,分别获取键值对,键和值。

c = {'语文': 90, '数学': 90, '英语': 75, '物理': '100'}
key=c.keys()
print("key:",key)
value=c.values()
print("value:",value)
item=c.items()
print("item:",item)

# key: dict_keys(['语文', '数学', '英语', '物理'])
# value: dict_values([90, 90, 75, '100'])
# item: dict_items([('语文', 90), ('数学', 90), ('英语', 75), ('物理', '100')])


四、  新增/修改
    a.新增或修改单个元素:
        dict[key] = value  -> a. 当 key 值存在,就修改 key 所对应的 value 值
                              b. 当 key 值不存在,就 添一个键值对 {key: value}       

x={"语文":73,"数学":75}
x["英语"]=75
print(x)
x["英语"]=60
print(x)
print(x.get("英语", 80))

#{'语文': 73, '数学': 75, '英语': 75}
#{'语文': 73, '数学': 75, '英语': 60}
#60

  b.修改对各字典元素:update()

c=dict(zip(["语文","数学","英语"],[73,75,75]))
#update()修改多个
c.update({"语文":100,"数学":90})
print(c)
# {'语文': 100, '数学': 90, '英语': 80}

五.、删除
    两种方式:
        a. mydict.pop(key,default),根据 key 值 来删除字典中的键值对。

c=dict(zip(["语文","数学","英语"],[73,75,75]))
#update()修改多个
c.pop("语文")
print(c)
{'数学': 75, '英语': 75}

        b. mydict.popitem(),默认删除 dict 字典中的最后一个元素。

c=dict(zip(["语文","数学","英语"],[73,75,75]))
#update()修改多个
c.popitem()
print(c)
{'语文': 73, '数学': 75}

c.del删除字典某个元素,删除整个字典del c 会报错,切片式del c[1:2]删除也会报错:

c=dict(zip(["语文","数学","英语"],[73,75,75]))
#update()修改多个
del c["语文"]
print(c)

 d.clear()清空字典:

c=dict(zip(["语文","数学","英语"],[73,75,75]))
#update()修改多个
c.clear()
print(c)
{}

六、 遍历
    四种方式:
a. 遍历dict得到key ->  for key in mydict

favorite_numbers = {'eric': [3, 11, 19, 23, 42],
                    'ever': [2, 4, 5],
                    'willie': [5, 35, 120],
                    }
# Display each person's favorite numbers.
for name in favorite_numbers:
    print( name) # 等同于 print( name.title())
# eric
# ever
# willie

b.直接遍历keys, mydict.keys() -> 现将 dict 字典中的 keys 用一个 list 封装好, 然后再遍历   -> for key in mydict.keys()。

for name in favorite_numbers.keys():
    print( name)      
    
# eric
# ever
# willie

c. 遍历 values  -> mydict.values()  ->  将 dict 字典中的 values 用一个 list 封装好,然后再遍历  -> for value in mydict.values。

favorite_numbers = {'eric': [3, 11, 19, 23, 42],
                    'ever': [2, 4, 5],
                    'willie': [5, 35, 120],
                    }
for name in favorite_numbers.values():
    print( name)        
    
#[3, 11, 19, 23, 42]
#[2, 4, 5]
#[5, 35, 120]


d. 遍历 key 与 values -> mydict.items() -> 先将 dict 中的 键值对 用 元组 tuple 封装好,然后在放到 list 中, 最后在遍历  -> for item in mydict.items()


5.  统计长度
    总结:
        len(mydict)
        统计的是字典的 key 值的个数
6.  成员关系
    总结:
        '甜心' in mydict  -> false
        看的是属不属于 key ,是 key 之间的成员关系

猜你喜欢

转载自blog.csdn.net/qimo601/article/details/128095933