4.字典dict全部用法

python 复制代码
# -*- coding: utf-8 -*-
"""
@Created on : 2026/4/20 16:59
@creator : er_nao
@File :Day_04.py
@Description :字典dict全部用法
"""

"""
空字典:里面什么都没有,后续可以加内容
字典名 = {}

有内容的字典:键值对格式 键:值,用逗号隔开
字典名 = {"键1": "值1", "键2": "值2", "键3": "值3", ...}
"""


"""
知识点1:字典的查

字典名["键名"]  --- (直接通过键获取对应的值,最常用)
字典名.get("键名", 默认值) ---(通过键获取值,键不存在时返回默认值,不会报错)
"""
word_text = {"自然": 2, "语言": 3, "处理": 1, "NLP": 5}
print("NLP的词频:", word_text["NLP"])
print("语言的词频:", word_text["语言"])
# get取值
print("get取值:", word_text.get("中古", "默认值"))
# 判断键是否在字典中存在
print("NLP在字典中吗?:", "NLP" in word_text)
print("中共在字典中吗:", "中共" in word_text)


"""
知识点2:字典的新增

字典名["新键"] = 新值  ---(往字典里添加单个新的键值对,最常用)
字典名.update(新字典) ---(批量添加多个键值对,或合并两个字典)
"""
word_freq = {"自然": 2, "语言": 3, "处理": 1}
# 赋值新增单个元素
word_freq['nlp'] = 8
print("新字典:", word_freq)
# update批量添加多个键值
new_word_freq = {'cv':10,'raw':11}
word_freq.update(new_word_freq)
print("批量添加后的字典:",word_freq)


"""
知识点3:字典的删除

del 字典名["键名"]	--- 删除字典里指定的键值对,最常用
字典名.pop("键名", 默认值)	---删除指定的键值对,并返回对应的值,键不存在返回默认值
字典名.clear()	---清空字典里的所有键值对,变成空字典
"""
word_del = {'自然': 2, '语言': 3, '处理': 1, 'nlp': 8, 'cv': 10, 'raw': 11}

# 删除指定的键值对
del word_del['nlp']
print("删除指定的键值对后:",word_del)

# pop
text_pop = word_del.pop('raw','formdate')
print("删除掉的词频:",text_pop)
print("pop后:",word_del)

# clear()
word_del.clear()
print('clear后:',word_del)

"""
知识点4:字典的「遍历」

for 键名 in 字典名:	            ---遍历字典里所有的键
for 值 in 字典名.values():	    ---遍历字典里所有的值
for 键名, 值 in 字典名.items():	---同时遍历键和值,最常用

"""
word_bianli = {"自然": 2, "语言": 3, "处理": 1, "NLP": 5, "大模型": 4}

# 遍历所有的键(词)
for key in word_bianli:
    print("当前键:",key)

#  遍历所有的值(词频)
for value in word_bianli.values():
    print("当前值:", value)

# 同时遍历键和值
for key,value in word_bianli.items():
    print(f"当前的键为:{key},值为{value}")

# 遍历是筛选,只打印词频大于3的词
for key, value in word_bianli.items():
    if value > 3:
        print(f"词:{key},出现次数:{value}")




"""
实操练习:

1.接收用户从键盘输入的一段中文文本
2.统计这段文本里,每个中文汉字出现的次数,用字典存储(键是汉字,值是出现次数),过滤掉空格和标点符号
3.对统计结果做以下处理:
    打印所有出现次数大于 1 的汉字和对应的次数
    找出出现次数最多的汉字,打印出来
    统计这段文本里一共有多少个不同的汉字
4.把统计结果按出现次数从多到少倒序打印

"""
input_text = input("请输入一段中文文本:")
word_count ={}
word_list = list(input_text)
for w in word_list:
    if w.strip() != "" and w not in ["。", ",", "!", "?", " "]:
        if w not in word_count:
            word_count[w] = 1
        else:
            word_count[w] = word_count[w] + 1
print("汉字出现次数统计结果:", word_count)
for key,count in word_count.items():
    if count>1:
        print(f"key是{key},出现次数:{count}")


print(f"一共有{len(word_count)}个不同的汉字")

# 找出出现次数最多的汉字(不会)
if word_count:
    max_count = max(word_count.values())
    max_char = [char for char,count in word_count.items() if count==max_count]
    print(f"出现次数最多的汉字是{max_char},出现次数{max_count}")

# 把统计结果按出现次数从多到少倒序打印
"""
解释:
word_count.items() :就是获取字典里所有的键值对,每个键值对是一个小括号,比如字典是{"自":2, "然":3, "语":1},items()就会得到[("自",2), ("然",3), ("语",1)]
key=lambda x: x[1] :这是排序的核心规则,告诉sorted()函数,「你要按每个键值对的第 2 个部分来排序」,比如("然",3),x[0]就是第 1 个部分「汉字」,x[1]就是第 2 个部分「出现次数」
reverse=True  : 排序的方向是倒序 ,如果不写这个参数,默认是reverse=False 也就是从小到大排
"""
sorted_word_count = sorted(word_count.items(), key=lambda item: item[1], reverse=True)
result_word=dict(sorted_word_count)
for key,value in sorted_word_count:
    print(f"汉字:{key},出现次数:{value}")

print(result_word)
相关推荐
92year16 分钟前
用Google ADK从零搭一个能调工具的AI Agent:Python实操全过程
python·ai·mcp
woxihuan12345636 分钟前
SQL删除数据时存在依赖关系_设置外键级联删除ON DELETE
jvm·数据库·python
Jetev1 小时前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
蛐蛐蛐1 小时前
昇腾910B4上安装新版本CANN的正确流程
人工智能·python·昇腾
m0_702036531 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
2401_846339562 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
2601_957780842 小时前
Claude 4.6 对阵 GPT-5.4:2026 开发者大模型 API 选型深度解析
人工智能·python·gpt·ai·claude
2601_957780842 小时前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai
zhaoyong2223 小时前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
2501_901006473 小时前
C#怎么实现配置热更新 C#如何在运行时动态刷新配置文件不需要重启程序【技巧】
jvm·数据库·python