前言
📌今天是Python的第四次练脑,本次题目为三题较为简单的题目
- 给定一个字典,其中键和值都是整数,找出字典中所有键和值的和为偶数的键值对,并返回结果的列表。
- 给定一个字典和一个值,将字典中所有等于该值的键删除,并返回删除键后的字典。
- 给定一个列表,将其中所有的字符串按照首字母排序,并返回排序后的列表。
第一题-题解
🎈给定一个字典,其中键和值都是整数,找出字典中所有键和值的和为偶数的键值对,并返回结果的列表。
dict_ = {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 12: 24, 24: 48}
dict_ = {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 12: 24, 24: 48} list_ = [] for key, value in dict_.items(): if (key + value) % 2 == 0: list_.append((key, value)) print(list_)
🎉这题纯粹的就是基础题,没有啥难度,了解循环,知道如何取出字典中的键值对,知道模除,知道列表的如何添加值即可写出来。如果不会,那就恶补基础吧。
第二题-题解
🎈给定一个字典和一个值,将字典中所有等于该值的键删除,并返回删除键后的字典。
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1}
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2, 'e': 1} my_value = 2 new_dict = {key: value for key, value in my_dict.items() if value != my_value} print(new_dict)
🎉这题,不写入一个新字典,你可能会遇到一个问题,那就是 "RuntimeError: dictionary changed size during iteration"
这是因为在遍历字典的同时删除其中的元素导致的。当你删除字典中的键时,会改变字典的大小,从而导致运行时错误。
✏️如果你有其他的解法,也欢迎后台留言告知!
第三题-题解
🎈给定一个列表,将其中所有的字符串按照首字母排序,并返回排序后的列表。
my_list = ["banana", "apple", "cherry", "date"]
my_list = ["banana", "apple", "cherry", "date"] for i in range(len(my_list) - 1): for j in range(len(my_list) - i - 1): if my_list[j][0] > my_list[j+1][0]: my_list[j],my_list[j+1] = my_list[j+1],my_list[j] print(my_list)
🎉这题,大可以使用sort,亦或者sorted进行排序。但是我不想使用,本就是打着练脑的标题,使用内置函数偷懒,就有些说不过去了。此外--有人会疑问,为什么字母也可以排序。
🎉可还记得ASCII值。
print(ord('a')) # 97 print(ord('b')) # 98
ord也是内置函数的一种,用于查阅ASCII值的。了解即可。
🌟上述代码,思路就是去每个元素的第一个字母进行比较,如果第一个大于第二个,则进行值的交换,以此来进行排序。也叫冒泡排序。