☰
Python中如何使用get函数实现频次查询
2026/10/31 2:01:01 网站建设 项目流程

首先,我将介绍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 代码的高频工具。

github.0voice

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询