【Rollo的Python之路】Python:字典的学习笔记

Dictionary

字典是另一种可变容器模型,且可存储任意类型对象。

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

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

print(dict1)
print(dict2)

#执行结果:

{'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python']}
{'num1': 1, 'num2': 2, 'num3': 3}

  注意事项:

1.0 Key必须是唯一的,不变的,可以是数字,字符串,元组,但是不是能列表!!!(列表是可变的)

2.0 Values是可变的,所有的类型的数据都可以,当然也可以是列表!!!

3.0 Dictionary 是无序的,因为它是按照hash来存储的,和存储的数据结构有关,所以不能用切片来处理

4.0 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

  字典的查找与修改:

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

print(dict1["name"])
print(dict2["num2"])

print(dict1)
print(dict2)

#执行结果:

rollo
2
{'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python']}
{'num1': 1, 'num2': 2, 'num3': 3}

 

如果用字典里没有的键访问数据,会输出错误如下:

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

print(dict1["name"])
print(dict2["num4"])

#执行结果:

rollo
Traceback (most recent call last):
  File "E:/python_work/fullstack_s6/week2/day06/dictionary.py", line 10, in <module>
    print(dict2["num4"])
KeyError: 'num4'

查找所有的键:dict.keys()

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

print(dict1.keys())  #所有键
print(dict2.keys())

print(list(dict1.keys())) #所有键转化为列表
print(list(dict2.keys()))

print(tuple(dict1.keys())) #所有键转化为元组
print(tuple(dict2.keys()))

#执行结果:

dict_keys(['name', 'age', 'work', 'hobby'])
dict_keys(['num1', 'num2', 'num3'])
['name', 'age', 'work', 'hobby']
['num1', 'num2', 'num3']
('name', 'age', 'work', 'hobby')
('num1', 'num2', 'num3')

查找所有的值:dict.values()

 

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

print(dict1.values())  #所有值
print(dict2.values())

print(list(dict1.values())) #所有值转化为列表
print(list(dict2.values()))

print(tuple(dict1.values())) #所有值转化为元组
print(tuple(dict2.values()))

#执行结果:

dict_values(['rollo', 25, 'CEO', ['music', 'reading', 'python']])
dict_values([1, 2, 3])
['rollo', 25, 'CEO', ['music', 'reading', 'python']]
[1, 2, 3]
('rollo', 25, 'CEO', ['music', 'reading', 'python'])
(1, 2, 3)

查找所有的键值对:dict.items()

 

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

print(dict1.items())  #所有的键值对
print(dict2.items())

print(list(dict1.items())) #所有键值对转化为列表
print(list(dict2.items()))

print(tuple(dict1.items())) #所有键值对转化为元组
print(tuple(dict2.items()))

#执行结果:

dict_items([('name', 'rollo'), ('age', 25), ('work', 'CEO'), ('hobby', ['music', 'reading', 'python'])])
dict_items([('num1', 1), ('num2', 2), ('num3', 3)])
[('name', 'rollo'), ('age', 25), ('work', 'CEO'), ('hobby', ['music', 'reading', 'python'])]
[('num1', 1), ('num2', 2), ('num3', 3)]
(('name', 'rollo'), ('age', 25), ('work', 'CEO'), ('hobby', ['music', 'reading', 'python']))
(('num1', 1), ('num2', 2), ('num3', 3))

  update方法:原来字典没有的key/value,直接加到原字典;原来的key,value会被更新

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,"name":"test"}

dict1.update(dict2)
print(dict1)

#执行结果:

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,"name":"test"}

dict1.update(dict2)
print(dict1)

   dict.fromkeys() 方法来创建字典:

fromkeys() 方法语法:

dict.fromkeys(seq[, value])
参数
seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)对应的值,默认为 None。
abc = ("a","b","c")
dict3 = dict.fromkeys(abc)
dict4 = dict.fromkeys(abc,50)
print(dict3)
print(dict4)

#执行结果:
{'a': None, 'b': None, 'c': None}
{'a': 50, 'b': 50, 'c': 50}

  字典的get()方法:

get()方法是用key找出相关的值,返回。如果key不存在,返回默认值。

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,"name":"test"}

a = dict1.get("name")
b = dict1.get("kkk",123456)

print(a)
print(b)
print(dict1)

#执行结果:

rollo
123456
{'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python']}

  pop() 方法:

Python 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值

popitem(),随机删除一个值。Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。

 

 

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,"name":"test"}

a1 = dict1.pop("name")
b1 = dict2.pop("num5",123) #必须要默认值,不然没有KEY的,就会报错

print(a1)
print(b1)
print(dict1)

#执行结果:

rollo
123
{'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python']}

 

  修改字典:

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

dict1["name"] = "google"
dict1["work"] = "manager"
dict2["num3"] = "Notonly"

print(dict1)
print(dict2)

#执行结果:
{'name': 'google', 'age': 25, 'work': 'manager', 'hobby': ['music', 'reading', 'python']}
{'num1': 1, 'num2': 2, 'num3': 'Notonly'}

如果原字典没有Key,就会把新加在原来字典后面:

 

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

dict1["name1"] = "google"
dict1["work1"] = "manager"
dict2["num4"] = "Notonly"

print(dict1)
print(dict2)

#执行结果:

{'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python'], 'name1': 'google', 'work1': 'manager'}
{'num1': 1, 'num2': 2, 'num3': 3, 'num4': 'Notonly'}

dict.setdefault(key,None) 

如果有相关的KEY,就返回来的值,

 

如果没有相关的KEY,就会在原字典加上默认的values,返回默认的值,

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

a1 = dict1.setdefault("age",36)
a2 = dict1.setdefault("travel","USA")

b1 = dict2.setdefault("num1",20)
b2 = dict2.setdefault("num5",90)

print(a1)
print(a2)
print(b1)
print(b2)
print(dict1)
print(dict2)

#执行结果:

25 #有age,返回age原来的25
USA #没有travel,返回默认值 USA
1 #有num1,返回num1原来的1
90 #没有num5,返回默认值90
{'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python'], 'travel': 'USA'} #没有travel,返回默认值 USA,同是在原字典上加上这个键值对

{'num1': 1, 'num2': 2, 'num3': 3, 'num5': 90}#没有num5,返回默认值90,同是在原字典上加上这个键值对

  删除字典元素:

del,clear()方法:

dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
dict2= {"num1":1,"num2":2,"num3":3,}

del dict1["hobby"] #删除hobby这组
print(dict1)
dict2.clear()  #清空字典
del.dict1  #删除速个字典

  Python 字典 in 操作符用于判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。

  而 not in 操作符刚好相反,如果键在字典 dict 里返回 false,否则返回 true。

 

posted @ 2019-04-16 22:08  Rollo|St  阅读(149)  评论(0编辑  收藏  举报