# 编写一个程序,统计一个中文字符串中每个字符出现的次数,并打印出统计结果
#这是一个字符串
str = "我爱编程"
#这是一个空的自带
count = {}
#for循环
for char in str:
if char in count: #字典count的添加
count[char] += 1
else:
count[char] = 1
for char, count in count.items():
print(f"字符 '{char}' 出现了 {count} 次")#格式化字符串输出
此案例,是使用字典实现统计每个字符出现次数,基于此案例,来展开字典的添加、删除、修改和输出。
首先
什么是字典?
字典通常指的是一种数据结构,用于存储键-值对。在计算机科学中,字典通常被称为哈希表或关联数组。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
有java基础的,可以理解为map集合。字典属于 ‘可变的数据类型’ ,但那些不可变数据类型,例如整形、字符串、浮点并不是不能修改,可变与不可变之间,其实就是它们的存储地址是否发生了变化。
---------------------------------------------------------------------------------------------------------------------------------
一、添加
字典的添加分为两种,一种为单个添加,一种为多个添加。
单个添加
my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3 # 添加新的键值对
多个添加
my_dict = {'a': 1, 'b': 2}
my_dict.update({'c': 3, 'd': 4}) # 一次添加多个键值对
还有一种是setdefault(),作用是如果键已经存在,则返回对应的值,不做任何修改;如果不存在,则插入新的键值对。
my_dict = {'a': 1, 'b': 2}
my_dict.setdefault('c', 3) # 如果键 'c' 不存在,则添加键值对
但是总体使用下来,记住单个添加和多个添加就好。
案例代码中,就是通过for循环将str字符串中的单个字符,添加到字典count中的,如果字典中没有出现过此字符则赋值为1;
二、修改
如下:
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
#值的修改
my_dict["name"]+="BBB"
my_dict["age"]+=10
#键的修改
my_dict["home"]=my_dict.pop('city')
print(my_dict.items())
效果:
字典的循环修改:
my_dict = {'a': 1, 'b': 2}
my_dict['c'] = 3 # 添加新的键值对
a = 0
while a<10:
my_dict['c']+=1
a+=1
print(my_dict['c'])
值的修改使用+=,数字是相加,字符串是追加,覆盖使用=;键的修改,使用pop()。
案例代码中,就是使用+=,当新的字符在原有的count字典已经出现过的时候,count的value值就会加1。
三、字典的删除
1,使用 del 关键字:
可以使用 del 关键字删除字典中特定的键值对。示例代码如下:
my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['a'] # 删除键为 'a' 的键值对
2,使用 pop() 方法: 字典的 pop() 方法可以根据键来删除对应的键值对,并返回被删除键对应的值。示例代码如下:
my_dict = {'a': 1, 'b': 2, 'c': 3}
value = my_dict.pop('b') # 删除键为 'b' 的键值对,并返回值
这两个方法是比较实用的,还有一些随机删除、全部删除之类的,感兴趣的可以去搜下。
四、字典的输出
1,循环输出
class1 = {'丁一': 85, '王二麻子': 95, '张三': 75, '李四': 65, '赵五': 55}
for i in class1: # 这个i代表的是字典中的键,也就是丁一、王二麻子等
print(i) #输出的是key,就是丁一、王二麻等
print(class1[i])#输出是value值,是85,95,75等
2,items()
class1 = {'丁一': 85, '王二麻子': 95, '张三': 75, '李四': 65, '赵五': 55}
a = class1.items()
print(a)
items()
方法会返回一个包含字典所有键值对的元组列表。
3,列表推导式
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys = {key: value for key, value in my_dict.items()}
print(keys)
4,单独输出键
(1)直接使用 for 循环遍历字典,而不指定值的部分。在这种情况下,循环将默认遍历字典的键。示例代码如下:
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict:
print(key)
(2)使用字典的 keys() 方法: 每个 Python 字典都有一个 keys() 方法,它返回一个包含字典所有键的视图对象。你可以将这个视图对象转换成列表或者直接在循环中使用。示例代码如下:
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key in my_dict.keys(): # 在循环中使用视图对象
print(key)
(3)列表推导式
my_dict = {'a': 1, 'b': 2, 'c': 3}
keys_only = {key for key in my_dict}
print(keys_only)
三种不同的方式,其输出的效果也是不同。
5,单独输出值
(1)使用字典的 values()
方法
my_dict = {'a': 1, 'b': 2, 'c': 3}
for value in my_dict.values():
print(value) # 逐个输出值
(2)使用列表推导式将值提取到一个列表中:
my_dict = {'a': 1, 'b': 2, 'c': 3}
values_list = [value for value in my_dict.values()]
print(values_list) # 输出包含所有值的列表
案例代码是for循环遍历和item()方法结合使用,是为了分别输出key和value
---------------------------------------------------------------------------------------------------------------------------------
总结:按理说轮子有一个就够了,但是我提供了不同的方法,去完成这个案例,是希望大家学习代码不是去背,而是去理解,去找到一个适合自己的代码风格。如果有什么错误或者有什么建议也请在评论帮我指出来,不胜感激!