Python基础知识7

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)#{}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值