超详细的Python字典讲解

目录

一、概念

1.定义

2.访问字典里的值

3.修改字典

4.删除字典元素

5.字典键的特性

6.遍历字典

6.1遍历所有键值对

6.2遍历字典中所有键

6.3按顺序遍历字典中的所有键

6.4遍历字典中所有值

二、字典内置函数&方法

1.内置函数

2.内置方法

三、嵌套

1.字典列表

2.在字典中 存储列表

3.在字典中存储字典


一、概念

1.定义

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

字典类型的创建

1.字典的每个键值key=>value对用冒号:分隔,每个键值对之间用逗号,分割,整个字典包括在花括号{}中

d = {key1:value1,key:value}

2.使用内置函数dict()创建字典

  1. 通过映射函数创建字典

zip(lst1,lst2)

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一的。

值可以去任何数据类型,但键必须不可变得,如字符串,数字或元组:

dit = {'alice':'2341','betch':'4567','ceil':'1234'}

也可如此创建字典:

dict1 = 6:37}{'abc':456}

dict2 = {'abc':123,98}


''' 创建字典 ''' #方法一: dit = {'cat':'www','dog':'mmm'} #方法二: lst1 = [10,20,30] lst2 = ['cat','dog','car'] zipobj = zip(lst1,lst2) d = dict(zipobj) #方法三:首参数创建 t = (10,20,30) print({t:10})

2.访问字典里的值

把相应的键放入熟悉的方括弧

下面代码中,获取键的值得方法的区别:

如果key不存在,dict[key]报错,dict.get(key)可以指定默认值

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} 
print("dict['Name']: ", dict['Name'])#1.获取键得值 
print("dict['Age']: ", dict['Age']) 
print(dict.get('Name'))#2.获取键的值

输出结果:

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

3.修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值

dict = {'Name':'zara','age':7,'class':'first'} 
dict['age'] = 8 #更新 
dict['school'] = 'runoob' #添加 dict

输出结果:

注意:键值对的排列顺序与添加顺序不同

4.删除字典元素

能删单一的元素也能清空字典,清空只需一项操作

注意:删除的键值对永远消失了

字典中key是无序的

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} 
del dict['Name'] # 删除键是'Name'的条目 
dict.clear() # 清空字典所有条目 
del dict # 删除字典

5.字典键的特性

字典值可以没有限制地去任何Python对象,既可以是标准的对象,也可以是用户定义的,但键不行。

2个重要的点需要记住:

  1. 不允许同一个键出现2次。创建时如果同一个键被复制两次,后一个只会被记住
  2. 键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行

6.遍历字典

6.1遍历所有键值对

shuren ={ "first_name": "杨", "last_name": "一", "age":"1", "city":"chognqin", } 
for key,value in shuren.items(): 
    print("\nKey:" + key) 
    print("Value:" + value)

对于遍历字典使用for循环,其中key和value可用任何名称代替

items()返回键值对列表

注意:遍历字典时,键值对的返回顺序与存储顺序不同

6.2遍历字典中所有键

shuren ={ "first_name": "杨", "last_name": "一", "age":"1", "city":"chognqin", } 
#遍历所有键 
for key in shuren.keys(): 
    print(key.title())

keys()返回一个列表,其中包含字典中的所有值

6.3按顺序遍历字典中的所有键

要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。

shuren ={ "first_name": "杨", "last_name": "一", "age":"1", "city":"chognqin", } 
#按顺序遍历字典中的所有键 
for key in sorted(shuren.keys()): 
    print(key)

6.4遍历字典中所有值

使用values()方法,返回一个值得列表,而不包含任何键。

shuren ={ "first_name": "杨", "last_name": "一", "age":"1", "city":"chognqin", } 
#遍历字典中所有的值 
for value in shuren.values(): 
    print(value.title())

如果需要提取大量数据,且数据之间存在重复项,为剔除重复项,可使用集合(set)

shuren ={ "first_name": "杨", "last_name": "一", "age":"1", "city":"chognqin", "number":"1", } 
#遍历字典中所有的值,剔除重复项 
for value in set(shuren.values()): 
    print(value.title())

二、字典内置函数&方法

1.内置函数

序号

函数及描述

1

cmp(dict1,dict2)

比较2个字典元素

2

len(dict)

计算字典元素个数,及键的总数

3

str(dict)

输出字典可打印的字符串表示

4

type(variale)

返回输入的变量类型,如果变量是字典就返回字典类型

2.内置方法

序号

函数及描述

1

dict.clear()

删除字典内所有元素

2

dict.copy()

返回一个字典的浅复制

3

dict.fromkev(seql,val)

创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

4

dict.get(key,default=None)

返回指定键的值,如果值不在字典中返回default值

5

dict.has_key(key)

如果键在字典dict里返回true,否则返回false

6

dict.items()

以列表返回可遍历的(键,值)元组数组

7

dict.keys()

以列表返回一个字典所有的键

8

dict.setdefault(key,default=None)

和get()类似,但如果键不存在于字典中,姜会添加键并将值设为defalut

9

dict.update(dict2)

把字典dict2的键/值对更新到dict里

10

pop(key[,default])

删除字典给定键key所对应的值,返回值为被删除的值。key值必须给出,否则,返回defalut值

11

dict.popitem()

返回并删除字典中的最后一对键和值

12

dict.values()

以列表返回字典中的所有值

三、嵌套

嵌套:将一系列字典存储在列表中,或将列表作为值存储在字典中。

1.字典列表

如何管理成群结队的外星人?

创建一个外星人列表,其中每个外星人都是字典,包含有关该外星人的各种信息

alien_0 = {'color':'green','points':5} 
alien_1 = {'color':'yellow','points':10} 
alien_2 = {'color':'red','points':15} 
aliens = [alien_0,alien_1,alien_2] 
for alien in aliens: 
    print(alien)

代码生成每个外星人

#创建一个用于存储外星人的空列表 
aliens = [] 
#创建30个绿色的外星人 
for alien_number in range(30): 
    new_alien = {'color':'green','points':5,'speed':'slow'} 
    aliens.append(new_alien) 
#修改前3个外星人的数据 
for alien in aliens[:3]: 
    if alien['color'] == 'green': 
        alien['color'] = 'yellow' 
        alien['speed'] = 'medium' 
        alien['points'] = 10 
#显示前5个外星人 
for alien in aliens[:5]: 
    print(alien)
print("...")
#显示创建了多少个外星人 
print("Total number of aliens:" +str(len(aliens)))

2.在字典中 存储列表

使用情况:每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表

#存储所点披萨的信息
pizza = {
    'crust':'thick',        #外皮类型
    'topping':['mushrooms','extra cheese'],     #配料
}
#概述所电披萨
print("You oedered a" + pizza['crust'] + "-crust pizza" + "with the following toppings:")
for topping in pizza['topping']:
    print("\t"+topping)

3.在字典中存储字典

users = {
    'zhang3' : {
        'first' : 'san',
        'last' : "zhang",
        'location' : 'princeton',
    },
    'li4' : {
        'first' : 'si',
        'last' : "li",
        'location' : 'paris',
    }
}
for username,user_info in users.items():
    print("\nUsername :" + username)
    full_name = user_info['first'] + " " + user_info['last']
    location = user_info['location']
    print("\tFull name:" + full_name.title())
    print("\tlocation:" + location.title())

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不爱敲代码的羊羊羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值