首页 > 其他分享 >day3字典

day3字典

时间:2023-03-04 23:57:07浏览次数:31  
标签:day3 Candy Alice 75 key print Bob 字典

"""
通过两个列表获取人对应的分数,比较麻烦,所以引出了字典
"""
names = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
scores = [45, 60, 75, 86, 49]
index = 0
for name in names:
    score = scores[index]
    print('{}的分数为{}'.format(name, score))
    index += 1

"""
打印结果:
Alice的分数为45
Bob的分数为60
Candy的分数为75
David的分数为86
Ellena的分数为49
"""

# enumerate方法,打印key和value
for k, v in enumerate(names):
    print(k, v)

"""
打印结果:
0 Alice
1 Bob
2 Candy
3 David
4 Ellena
"""

"""
定义一个空dict
"""
d = dict()
d1 = {}
print(d, d1)

"""
练习:
新来的Gaven同学成绩是86,请编写一个dict,把Gaven同学的成绩也加进去。
"""
d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
d['Gaven'] = 86
print(d)  # {'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Gaven': 86}

"""
通过key返回value的值,若key不存在会报错
"""
print(d['Alice'])  # 45
# print(d['Dolt'])    # KeyError: 'Dolt'

# 先判断key存不存在,以避免错误
# 方法一:
if 'Alice' in d:
    print(d['Alice'])
else:
    print('Alice not in d')

# 方法二:dict本身提供get方法,把key当作参数传递给get方法,就可以获取对应的value,当key不存在时,也不会报错,而是返回None
print(d.get('Alice'))  # 45
print(d.get('Dolt'))  # None

"""
字典中新增、修改元素:d['Bob'] = 75
赋值语句其实有两个功能:
    1、当key不存在时,往dict中添加对应的key: value元素。
    2、当key存在时,会更新dict,用新的value替换原来的value。
"""
d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
d['Mimi'] = 72
print(d)

d['Dodo'] = [72, 73]
print(d)

d['Dodo'].append(75)
print(d)

"""
打印结果:
{'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Mimi': 72}
{'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Mimi': 72, 'Dodo': [72, 73]}
{'Alice': 45, 'Bob': 60, 'Candy': 75, 'David': 86, 'Ellena': 49, 'Mimi': 72, 'Dodo': [72, 73, 75]}
"""

"""
练习:
已有同学的某次成绩dict如下:
d = {
    'Alice': [45],
    'Bob': [60],
    'Candy': [75]
}
Alice、Bob、Candy的最近三次的成绩分别是[50, 61, 66],[80, 61, 66],[88, 75, 90],请更新dict,使得dict可以保存同学多次的成绩。
"""
d1 = {
    'Alice': [45],
    'Bob': [60],
    'Candy': [75]
}
d1['Alice'].append(50)  # append只能单个元素新增
d1['Alice'].append(61)
d1['Alice'].append(66)
print(d1)
d1['Bob'].extend([80, 61, 66])  # extend可以合并两个列表
d1['Candy'].extend([88, 75, 90])
print(d1)

"""
打印结果:
{'Alice': [45, 50, 61, 66], 'Bob': [60], 'Candy': [75]}
{'Alice': [45, 50, 61, 66], 'Bob': [60, 80, 61, 66], 'Candy': [75, 88, 75, 90]}
"""

"""
字典中删除元素:dict提供便捷的pop()方法,允许我们快速删除元素,pop()方法需要指定需要删除的元素的key,并返回对应的value。
"""
d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
alice_score = d.pop('Alice')
print(alice_score)
print(d)

"""
在dict中,使用keys()方法,可以返回dict的所有key,在删除某个元素时,可以通过这个方法先判断某个元素是否存在,
请改造前面的程序,使得即使key不存在时,删除也不会抛异常
"""
name = 'Alice'
if name in d.keys():
    d.pop(name)
else:
    print('{} not in keys'.format(name))

"""
dict的特点:
1、查找速度快:无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
2、dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
3、key不可变:key可用字符串、数字、tuple,定义其他可变类型时会报错
4、dict是按 key 查找,所以,在一个dict中,key不能重复
5、python3.6版本之后,dict打印的顺序和定义的顺序一致了。但为了避免不必要的误解,一般在需要有序的dict时,我们会使用一种叫做Ordereddict的字典,来确保有序
"""
d = {}
d[(1, 2, 3)] = True
print(d)    # {(1, 2, 3): True}

# d[[1, 2, 3]] = False
# print(d)    # TypeError: unhashable type: 'list'

# 这个错误通常意味着你试图将一个list对象用作哈希参数(hash argument),有以下两种典型(常见)的情况:
#   (1) 用作字典的键值
#   (2) 用作集合set的元素

# key不能重复
d1 = {'zoey': 75, 'cibo': 120, 'cibo': 100}
print(d1)   # {'zoey': 75, 'cibo': 100}


"""
遍历dict:
    1、第一种是遍历dict的所有key,并通过key获得对应的value。
    2、通过dict提供的items()方法,items()方法会返回dict中所有的元素,每个元素包含key和value。
"""
d = {
    'Alice': 45,
    'Bob': 60,
    'Candy': 75,
    'David': 86,
    'Ellena': 49
}
for key in d:
    if d[key] > 60:
        print(key, d[key])

for k, v in d.items():
    if v > 60:
        print(k, v)

"""
打印结果:
Candy 75
David 86
"""


"""
练习:
同学的近三次成绩如下,请把每个同学的每次成绩依次输出。
d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
"""
d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
for k,v in d.items():
    for score in v:
        print(k, score)

"""
打印结果:
Alice 50
Alice 61
Alice 66
Bob 80
Bob 61
Bob 66
Candy 88
Candy 75
Candy 90
"""


"""
dict的其他方法:
    1、获取dict的所有key:d.keys()
    2、获取dict所有的value:d.values()
    3、清除所有元素:d.clear()
"""
d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
for key in d.keys():
    print(key)

"""
打印结果:
Alice
Bob
Candy
"""

for value in d.values():
    print(value)

"""
打印结果:
[50, 61, 66]
[80, 61, 66]
[88, 75, 90]
"""

d.clear()
print(d)    # {}


"""
练习:
已知d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]},请输出d的元素个数。
"""
d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]}
keys = d.keys()
print(keys)
print(len(keys))    # 3

 

标签:day3,Candy,Alice,75,key,print,Bob,字典
From: https://www.cnblogs.com/purewhite/p/17179537.html

相关文章

  • day3元组
    """字符串切片"""str1='abcdefghi'print(str1[:])print(str1[1:2])print(str1[1:1])print(str1[1:4:2])print(str1[1:4:-1])print(str1[4:1:-1])print(str1[:......
  • day3函数
    """函数的概念:S=πr²,当我们知道半径r的值时,就可以通过公式计算出面积,假设我们需要计算3个不同大小的圆的面积:出现了几乎完全重复的代码,每次计算圆的面积的......
  • day3集合
    """set和list类似,拥有一系列元素,但是set和list不一样,set里面的元素是不允许重复的,而list里面可以包含相同的元素;set与list的另一个区别是,set里面的元素是没有顺序的。打......
  • 简单介绍Python中如何给字典设置默认值
    这篇文章主要介绍了Python中如何给字典设置默认值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教Python字典设置默认值我们都知道,在Pyt......
  • 代码随想录算法Day32 | 122.买卖股票的最佳时机II ,55. 跳跃游戏 ,45.跳跃游戏II
    把利润分解为每天为单位的维度,而不是从0天到第3天整体去考虑!122.买卖股票的最佳时机II题目链接:122.买卖股票的最佳时机II-力扣(LeetCode)思路   这道题使用贪心......
  • 字典、集合
    删除:字典删除:pop(key):根据key实现删除,删除的是键对值valuepopitem:返回值(key,value),从后往前删除#foriinbooks:#每循环一次酒绑定一个字典给i,然后删除字典里的‘......
  • 字典树
    一种数据结构而已,按照字符来储存,通过以有的信息来优化空间,从根节点到尾部来表示这个字符串他的很多功能要利用树上DP的思想去使用  #include<bits/stdc++......
  • 代码随想录算法训练营Day31 贪心算法| 理论基础 455.分发饼干 376. 摆动序列 53. 最
    代码随想录算法训练营理论基础什么是贪心贪心的本质是选择每一阶段的局部最优,从而达到全局最优。每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。贪......
  • [JOISC 2021 Day3] ビーバーの会合 2
    前言:离联合省选还有28天,模拟赛40min把这题切了睡了一上午。来讲个有点异类,不用点分治的单\(\log\)做法。首先我们观察发现在奇数的时候答案是\(1\),偶数的时候答......
  • SpringCloud微服务实战——搭建企业级开发框架(四十九):数据字典注解的设计与实现
      数据字典是系统中基本的必不可少的功能,在多种多样的系统中,数据字典表的设计都大同小异。但是使用方式确是多种多样,设计好一套易用的数据字典功能模块,可以使开发事半功......