Python中如何使用get函数实现频次查询

首先,我将介绍python 中 get() 函数的意义及用法

get() 主要是 字典(dict) 的方法,用于安全地获取键对应的值 ,避免因键不存在而抛出 KeyError 异常。


一、基本语法

python

复制代码
dict.get(key, default=None)
参数 说明
key 要查找的键
default 可选,键不存在时返回的默认值,默认为 None

返回值:

  • 键存在 → 返回对应的值

  • 键不存在 → 返回 default(不传则为 None)


二、与 dict[key] 的区别

python

复制代码
d = {"name": "Tom", "age": 18}

# 方式1:直接用 []
print(d["name"])      # Tom
# print(d["gender"])  # ❌ KeyError: 'gender'

# 方式2:用 get()
print(d.get("name"))      # Tom
print(d.get("gender"))    # None(不报错)
print(d.get("gender", "未知"))  # 未知

核心意义 :get() 不会因键缺失而报错。


三、常见用法

1. 提供默认值

python

复制代码
config = {"host": "localhost"}
port = config.get("port", 8080)   
2. 替代 if key in dict 判断

python

复制代码
# 啰嗦写法
if "name" in d:
    value = d["name"]
else:
    value = "默认"

# 简洁写法
value = d.get("name", "默认")
3. 计数场景

python

复制代码
words = ["a", "b", "a", "c", "a"]
count = {}
for w in words:
    count[w] = count.get(w, 0) + 1
# {'a': 3, 'b': 1, 'c': 1}
4. 分组场景

python

复制代码
data = [("fruit", "apple"), ("veg", "carrot"), ("fruit", "banana")]
groups = {}
for k, v in data:
    groups.setdefault(k, []).append(v)   # 或配合 get
# {'fruit': ['apple', 'banana'], 'veg': ['carrot']}
5. 链式安全访问(嵌套字典)

python

复制代码
user = {"info": {"name": "Tom"}}
name = user.get("info", {}).get("name", "未知")  # Tom

四、注意事项

  1. get() 不会修改字典,键不存在时也不会自动添加键。

    python

    复制代码
    d = {}
    d.get("x", 10)   # 返回 10
    print(d)         # {}  —— 字典仍是空的

    如需"不存在则添加",用 setdefault():

    python

    复制代码
    d.setdefault("x", 10)   # d 变为 {'x': 10}
  2. 默认值只在键缺失时返回 。若键存在但值为 None,返回的是 None,不是默认值:

    python

    复制代码
    d = {"x": None}
    print(d.get("x", 100))   # None(不是 100)
  3. get() 是字典的方法 ,列表、集合等没有此方法(列表有 .index(),但语义不同)。


五、实用案例

data.txt,其中记录了2019年QS全球大学排名前20名的学校信息,示例如下:

1,麻省理工学院,美国

2,斯坦福大学,美国

3,哈佛大学,美国

第一列为排名,第2列为学校名称,第3列为学校所属的国家,字段之间用逗号",隔开

程序读取data.txt文件内容,统计出现的国家个数以及每个国家上榜大学的数量及名称,输出结果格式示例如下:

美国:11:麻省理工学院斯坦福大学 哈佛大学加州理工学院芝加哥大学 普林斯顿大学康奈尔大学 耶鲁大学哥伦比亚大学 宾夕法尼亚大学密歇根大学安娜堡分校

英国:5:牛津大学 剑桥大学帝国理工学院伦敦大学学院 爱丁堡大学

如何使用get函数实现,相同键不同值的统计呢

复制代码
f = open('data.txt', 'r',encoding="utf-8")
dic={}
for line in f:
    i=line.strip().split(",")
    if len(i)<3:
        continue
    dic[i[-1]]=dic.get(i[-1],[])+[i[1]]
unis=list(dic.items())
unis.sort(key=lambda x:len(x[1]),reverse=True)
for d in unis:
    print('{:>4}: {:>4} : {}'.format(d[0],len(d[1]),','.join(d[1])))

六、其他对象的 get

  • requests 库 :response.get(url) 发送 GET 请求(不同于字典)。

  • Queue :queue.get() 从队列取元素。

  • Tkinter 变量 :var.get() 获取控件值。

这些是不同类的同名方法,语义各异,但"字典 .get()" 是最常见、最需要掌握的用法。


总结

场景 推荐
确定键存在 d[key]
键可能不存在 d.get(key, default)
不存在则添加 d.setdefault(key, default)

get() 的本质是容错取值,是写健壮 Python 代码的高频工具。

https://github.com/0voice

相关推荐
小张成长计划..1 小时前
【Linux】27:日志
linux·运维·服务器
moshuying1 小时前
DeepSeek开源生产级推理框架DeepInfer:单集群一天处理155万亿token,这意味着什么?
前端
AI 编程助手GPT1 小时前
GPT 脚本别只发一个文件:用 uv 把依赖和锁一起交付
人工智能·python·gpt·uv·依赖管理
Patrick在香港1 小时前
第 16,216 次连接之后,它不干了
python·网络编程·socket·tcp·连接池
我命由我123451 小时前
Python 开发 - Python 虚拟环境
运维·开发语言·后端·python·http·https·java-ee
dlhto2 小时前
Windows 使用 Rufus 制作 AlmaLinux 10.2 启动 U 盘:从 ISO 下载到服务器安装
运维·服务器·windows
云和数据.ChenGuang2 小时前
LLM大模型对接本地Ollama部署模型
开发语言·人工智能·python·langchain
子兮曰2 小时前
PHP漏洞危机,你的网站升级了吗?
前端·后端·php
jerrywus2 小时前
给 Pi 装上生图插件:从登录报错到画出一只 200×200 的猫
前端·agent·claude