Python基础教程(5)数据类型之字典dict

TangLu 未命名 2019-12-12 3120 0

一、Python字典介绍

· 字典是一种映射类型的数据,它的元素是由键值对(key:value)组成,

· 字典中的Key不能重复,如果Key出现重复情况,最后出现的Key会覆盖前面的Key

· 字典中存放的数据是可变的,但是Key必须为不可变类型(字符串、数字、元组)。因为字典通过可以被哈希的Key来进行数据查找,这样可以让查询速度比列表和元组都更快。也由于哈希算法的特性,字典中存放的Key需要是可哈希、不可变的,所以当字典嵌套其他类型数据时不能使用列表来作为字典的Key。

· 在Python3.6之前字典中的元素都是无序的,要查找或者添加字典中的元素时需要使用字典中的Key,不能使用下标

· 与列表相比,会占用更多的内存,属于空间换时间


二、Python字典使用

1、创建字典

#使用花括号创建字典
user_info = {'name':'tanglu','age':18,'height':180}

user_info = {
    "age":12,
    "name":'tanglu'
}

#使用字典函数创建字典
print(dict({'name':'tanglu','age':18,'height':180})


2、查询字典

#通过指定key来获取值,如果key不存在则会报出Key Error的错误
user_info = {'name':'tanglu','age':18,'height':180}
print (user_info)  #输出为{'name': 'tanglu', 'age': 18, 'height':180,'id': 1}
print (user_info['name'])  #输出为tanglu

#使用get()方法指定key的值,如果key不存在返回none
print(user_info.get('name'))  #输出tanglu 

 #判断字典中是否存在某元素
print ('age' in user_info)  #True


3、添加\修改字典中的元素

user_info["id"] = 1  #添加id这个key,值为1。如果字典中已经存在该key,则是修改该key的值


4、删除字典中的元素,如果该key不存在则会报出Key Error的错误

del user_info['id']


5、通过item方法遍历字典中的键值

user_0 = {
      'username': 'efermi',
      'first': 'enrico',
      'last': 'fermi',
      }

for key, value in user_0.items():
    print(f"\nKey: {key}")
    print(f"Value: {value}")
    
info = {"age":12, "status":True,"name":"tanglu"}
for item in info.key():
  print(item)

info = {"age":12, "status":True,"name":"tanglu"}
for item in info.values():
  print(item)
   
info = {"age":12, "status":True,"name":"tanglu"}
for key,value in info.items():
  print(key,value)


6、字典的嵌套使用

当字典中某一个key需要有多个值时,可以在字典中嵌套一个列表来实现

#字典嵌套列表
favorite_languages = {'jen': ['python', 'ruby'],'sarah': ['c'],'edward': ['ruby', 'go'],'phil': ['python', 'haskell']}

#列表嵌套字典
address_book = [
   {'name': '张三', 'age': 6, 'height': 120},
   {'name': '李四', 'age': 6, 'height': 110},
   {'name': '王五', 'age': 7, 'height': 130},
]


三、Python字典常用方法

items():获取字典中的所有键值

#遍历字典中的键值并传送给2个变量
student_info = {'zhangsan':'boy','lisi':'boy'}
for x,y in student_info.items():
   print("{0} is a {1}".format(x,y))
   
for key,value in dict1.items():
 if value >90:
   print (key)


keys():获取字典中的每个key

print (info.keys())  #使用key函数获取字典中所有的key


values():获取字典中每个key所对应的值

print (info.values())  #values函数获取所有值

book = {'书名':'三体','作者':'刘慈欣','价格':'20'}
for i in book.values():
   print(i)


pop():在字典中没有remove()方法,要删除数据的话需要使用pop()或者popitem()方法

info = { 'name':'tanglu','age':18}
result=info.pop('name')  #删除name这个key,其值赋值给了result变量作为调用
print(result)  #输出tanglu


get():用于获取字典中某个key的值,如果key不存返回默认值None,而不是直接让程序报错

#get(key,default)  #如果字典中存在这个key则返回它的值,否则返回设置的默认值,没有设置默认值的话返回none
info1 = {"名字":"唐路","年龄":"18","性别":"男"}
info2 = info1.get("名字")
print(info1)  #输出{'名字': '唐路', '年龄': '18', '性别': '男'}
print(info2)  #输出唐路
print (info1.get('测试','没有该key'))  #输出没有该key


update():如果字典中没有键就添加,如果已存在就更新其值,一次可以添加或者修改多个元素

info = { 'name':'tanglu','age':18}
info.update({'age':11,'sex':'man'})
print(info)  #输出{'name': 'tanglu', 'age': 11, 'sex': 'man'}


clear():清空字典

info = { 'name':'tanglu','age':18}
info.clear()


setdefault():如果字典中存在指定的key就返回值,否则就创建Key并设值

info = { 'name':'tanglu','age':18}
info.setdefault('sex','male')
print(info)  #输出{'name': 'tanglu', 'age': 18, 'sex': 'male'}

评论