什么是python Dictionary字典?

192 阅读3分钟

Dictionary字典

4、Dictionary字典

  • 字典是一个无序、可变和有索引的集合。在 Python 中,字典用花括号编写,拥有键和值。

  • 通过在方括号内引用其键名来访问字典的项

  • 通过引用其键名来更改特定项的值

  • 使用 for 循环遍历字典

  • values()-返回字典的值

  • items()-返回键和值

  • in

  • 字典长度

  • 添加项

  • 删除项

    • pop
  • 字典方法

    • get
    • keys

代码例子

  • Dictionary - 字典

用{}创建字典,键(key)和值(value)之间用冒号(:)分割,键值对之间用逗号(,)分割

d1 =  {100:"hello","python":[2,4,6]} 
print(d1,type(d1))     #    dict-字典

创建一个空的字典用dict()函数

d2 = dict() 
print(d2,type(d2))

{}创建空的字典

d3 = {}   
print(d3,type(d3))

创建字典

user={'username':'zhang','age':20}
print(user)  

[key]获取key对应的value

print(user['username'],user['age'])   
print(user['sex'])  #KeyError: 'sex'

新建一个键值对

user['sex']='男'   #'sex'在字典中不存在
print(user)

根据键修改值

user['age']=22     #'age'在字典中已存在
print(user) 

# user['username']='xiaoming'
# user['age']=18
# user['sex']='女'
# print(user)

update(dict) - 用给定的字典同时增加或修改原字典)

xm = {'username':'xiaoming','age':18,'no':1001} 
user.update(xm)
print(user)

同一个字典中键不能重复,不可变的类型(如:数字、字符串、元组)可以作为键

d3 = {'hello':100,'python':100,('java',):100}     #列表是可变的,不能作为键
print(d3) 

get() - 根据关键字获取值,但是关键字不存在,不报错,返回指定的值,默认返回None

print(d3.get('age',20) )   

pop(key) - 根据键删除键值对

value = d3.pop('hello')    #返回键对应的值,如果键不存在,抛出错误KeyError
print(value)
print(d3) 

clear() - 清空

d3.clear()
print(d3)

字典遍历

scores={'python':100,'java':100,'web':99}
scores['js']=98 
print(scores) 

keys() - 获取键 ,返回的类型是dict_keys

print(scores.keys(),type(scores.keys()))   
#list() -  dict-keys -->list
ks = list(scores.keys() )
print(ks[0])

values() - 获取值 ,返回dict_values

vs = scores.values()
print(vs,type(vs))  
vs = list(vs)
print(vs) 

for in 语句遍历

for k in scores:
    print(k,scores[k])    #k字典中的键

# scores['php']=97
# scores['php']=0  
# print(scores) 
sc = scores.setdefault('php',0)
print(scores) 
print(sc) 

字典存放列表数据

names = ['zhang','lisi','xiaoming','zhao','liu'] 
scores = [95,88,99,90,95,10]  

students={}
for i in range(0,len(names)):
    students[names[i]]=scores[i]

print(students) 
print(students['liu']) 

zip() - 拉链

z = zip(names,scores)
stu = dict(z)  
print(stu) 

copy() - 拷贝

stu2 = stu.copy()  #创建新的字典
# stu2 = stu   # 不创建新的字典
print(stu,id(stu)) 
print(stu2,id(stu2)) 

hash() - 哈希函数

# print(hash('zhang'))  
# print(hash('zhang'))  
# print(hash('lisi')) 
# stu3={}
# stu4 = stu3.fromkeys(names)   #创建一个新的字典并返回  把names中的元素作为键
# print(stu4)
# print(stu3.fromkeys(names,0))  #指定键对应的值,如果不指定,默认值是None

items() - 返回dict_items

its = stu2.items()
print(its,type(its))  
its = list(its)   #[('zhang', 95), ('lisi', 88), ('xiaoming', 99), ('zhao', 90), ('liu', 95)]
it =its[0]     #('zhang', 95)
print(it[0],it[1]) 

in - 检查字典中是否有给定的键

print('zhou' in stu2)   #False
print('lisi' in stu2)   #True

len(dict) - 返回字典中键的数量

print(len(stu2))   # 一个键值对算一个