Python字典(dict )
1.字典是一种可变容器模型,且可存储任意类型对象。
2.字典的每个键值对( key:value )用冒号分割,每个对之间用逗号分割,整个字典包括在花括号 {} 中
d = {key1 : value1, key2 : value2, key3 : value3 }
创建字典
1.dict 作为 Python 的关键字和内置函数,变量名不建议命名为 dict。
2.键必须是唯一的,但值则不必。
3.值可以取任何数据类型,但键必须是不可变的,如字符串,数字。
d1 = {}#创建空字典
d2 = dict()#使用内建函数 dict()创建字典
d3 = {"name":"karen","age":23}
d4 = dict({"name":"jack","age":24})
# x={"name":"karen","age":20,y:100}#报错,y未定义
y="money"
x={"name":"karen",
"age":20,
y:100}#不报错,y在定义字典之前被定义,字典可换行书写
print(x)#{'name': 'karen', 'age': 20, 'money': 100}
x4={
"name":"jack",
"age":20,
"name":"jack2"
}
print(x4)#{'name': 'jack2', 'age': 20} 如果键值对相同取靠后的键值对,键名不能一样,但键值可以一样
x5={(10,20):100}#字典中键值对的键名可以是不可变的数量类型 键值可以是任何数据类型
访问字典里的值
1.访问字典里的值
2.如果用字典里没有的键访问数据,会输出错误
mydic = {'Name': 'hqyj', 'Age': 7, 'Class': 'First'}
print (mydic['Name'])#hqyj
print (mydic['Alice'])#报错
# print(mydic[1:2])#报错 字典的键无论是不是有顺序的数字 都不能切片,只能通过key取值
修改字典
1.向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
x7={"x":100,"y":200}
x7["y"]=999999
print(x7)# {'x': 100, 'y': 999999}
# re=x7["z"]#报错,取字典中不存在的键报错
x7["z"]=1111#存字典中不存在的键,不会报错,新增的键值对会存入字典中
print(x7)# {'x': 100, 'y': 999999, 'z': 1111}{'x': 100, 'y': 999999, 'z': 1111}
删除字典元素
1.能删单一的元素也能清空字典,清空只需一项操作
2.显式删除一个字典用del命令
mydic = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
del mydic['Name'] # 删除键 'Name'
mydic.clear() # 清空字典
print (mydic['Age'])#报错
del mydic # 删除字典
print(mydic) #出错,字典已经被删除
字典键的特性
1.字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。
2.不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
mydic = {'Name': 'jack', 'Age': 27, 'Name': 'karen'}
print (mydic['Name'])#karen
3.键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
mydic1 = {97:"a",98:"b"}
mydic2 = {"name":"karen","age":27}
mydic3 = {['Name']: 'karen', 'Age': 27}
print(mydic3[['Name']])#报错unhashable type: 'list'
字典常用的API
len(dict)
1.len(dict):计算字典元素个数,即键的总数。
x8={1:20,9:232,"name":"jack",True:121212}#True会变为1
print(x8)#{1: 121212, 9: 232, 'name': 'jack'}
print(len(x8))#3 1和True算为1个长度,只会存在一个
str(dict)
1.str(dict):输出字典,可以打印的字符串表示。
x8={1:20,9:232,"name":"jack",True:121212}#True会变为1
q=str(x8)#将字典转化为字符串,字典都是一个字符串
#网络传输数据时非常有用
print(q,type(q))#{'name': 'karen', 'age': 20, 'money': 100} <class 'str'>
#JSON是一种字符串(python中的字典相当于其他语言(java)的对象)
type(variable)
1.type(variable):返回输入的变量类型,如果变量是字典就返回字典类型。
字典的方法
dict.clear()
1.dict.clear():删除字典内所有元素
dict.copy()
1.dict.copy():返回一个字典的深复制
x={1:20,9:232,"name":"jack",True:121212,"vip":False,"books":["book1","book2"]}
x2=x.copy()
x2[1]=999999
x2["books"][0]=9999
print(x)#{1: 121212, 9: 232, 'name': 'jack', 'vip': False, 'books': [9999, 'book2']}
print(x2)#{1: 999999, 9: 232, 'name': 'jack', 'vip': False, 'books': [9999, 'book2']}
x2["books"]=[10,20,30]
print(x)#{1: 121212, 9: 232, 'name': 'jack', 'vip': False, 'books': [9999, 'book2']}
print(x2)#{1: 999999, 9: 232, 'name': 'jack', 'vip': False, 'books': [10, 20, 30]}
dict.fromkeys(seq)
1.dict.fromkeys(seq):创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
keys=[10,20,30,40]
x=dict.fromkeys(keys)
print(x)#{10: None, 20: None, 30: None, 40: None}
keys=range(10)
x=dict.fromkeys(keys)
print(x)#{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
dict.get(key, default=None)、dict.setdefault(key, default=None)
1.dict.get(key, default=None):返回指定键的值,如果键不在字典中返回 default 设置的默认值
x={0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
# age=x["age"]#报错
age=x.get("age")
print(age)#None 不报错
age=x.get("age",100)#没有,默认取100
print(age)#100
2.dict.setdefault(key, default=None):和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
x={0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None}
x.setdefault("name","jack")#在字典后面添加了一对键值对
print(x)#{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, 8: None, 9: None, 'name': 'jack'}
# x.setdefault(key=1,__default="jack",)#key为1或者11都没有任何操作
key in dict
1.key in dict:如果键在字典dict里返回true,否则返回false
dict.keys()、dict.values()、dict.items()
1.dict.keys():返回一个视图对象
x={"name":"karen","age":20,"vip":False}
obj=x.keys()
print(obj)#dict_keys(['name', 'age', 'vip'])
for el in obj:
print(el)#name、age、vip
for el in x:
print(el)#name、age、vip
for el in x:#el取出的是字典的键名,是字符串就是字符串,是数字就是数字
print(x[el])#不能是print(x["el"]),字典中没有这个el的字符串
2.dict.values():返回一个视图对象
x={"name":"karen","age":20,"vip":False}
obj2=x.values()
print(obj2)#dict_values(['karen', 20, False])
#遍历字典值
for el in obj2:
print(el)
3.dict.items():以列表返回一个视图对象
x={"name":"karen","age":20,"vip":False}
obj3=x.items()#items中每个数据是元组
print(obj3)#dict_items([('name', 'karen'), ('age', 20), ('vip', False)])
for el in obj3:
print(el)#('name', 'karen')、('age', 20)、('vip', False)
#for循环中的必须是元组才可以k、v这样写
for el in obj3:
k,v=el
print(k,v)#name karen、age 20、vip False
for k,v in obj3:#k是循环下标 v是对应的值
print(k,v)#name karen、age 20、vip False
dict.update(dict2)
1.dict.update(dict2):把字典dict2的键/值对更新到dict里
x={1:200,2:2222}
y={1:333,4:5444,5:2233}
z=x.update(y)
print(z)#None 直接修改x
print(x)#{1: 333, 2: 2222, 4: 5444, 5: 2233}
# z=x+y
# print(z,1111)#报错
pop(key,default)
1.pop(key,default):删除字典 key(键)所对应的值。
x={"name":"karen","age":20,"vip":False}
d=x.pop("vip")
# d=x.pop("vip2")#不能删除不存在的键名
print(x)#{'name': 'karen', 'age': 20}
print(d)#False
popitem()
1.popitem():返回并删除字典中的最后一对键和值。
x={"name":"karen","age":20,"vip":False}
x.popitem()
x.popitem()
print(x)#{'name': 'karen'}
x.popitem()#没有键值对不能在删除了
print(x)#{}
标签:None,name,Python,age,基础知识,dict,print,字典
From: https://blog.csdn.net/m0_73723097/article/details/142793823