Python技术迷

一个人写代码也用 git管理吗?

刚刷到有网友问:一个人写代码也用 Git 吗?

Image

我只能说,这问题就像在问“自己做笔记还要用 Notion 吗?”——当然要啊!而且这事,不是用不用 Git 的问题,而是你有没有对自己的代码负责的意识。哪怕你是一个人开发,也得考虑版本回滚、历史追踪、自动化部署这些事情,出事了总不能全靠 Ctrl+Z 吧?

网友的回帖我看了,有人说太麻烦,有人说无所谓。但从程序员的角度讲,Git 不只是协作工具,更是一种编程习惯,哪怕是一人项目也值得维护清晰的提交记录。

换个角度想,如果你连最基本的代码版本管理都不上心,出问题时排查靠记忆,优化靠拍脑袋,那跟“开车不系安全带”有什么区别?

用 Git 是基础素养,不分团队大小,别等出 bug 才想起它的好【备注:文末可领最新资料】

面试题:学生地理信息报告

这次我们来看个算法题:学生地理信息报告。表面看着像个小case,其实里面细节还挺多的,属于那种“代码不难写,思路容易乱”的类型。

题目大概意思是:给你一堆学生的地理信息,包括名字、国家、省份、城市,让你整出一个报告:按国家、省份、城市的层级,统计各级下学生数量。是不是听起来像做个树形结构?

我脑袋一热就想,json嵌套字典是吧?经典套路!于是直接开干。

from collections import defaultdict

# 一个三层嵌套的 defaultdict 模板,用来构建多层级的数据结构
deftree():
return defaultdict(tree)

data = [
    {"name": "Alice", "country": "中国", "province": "广东", "city": "广州"},
    {"name": "Bob", "country": "中国", "province": "广东", "city": "深圳"},
    {"name": "Charlie", "country": "中国", "province": "浙江", "city": "杭州"},
    {"name": "David", "country": "美国", "province": "加州", "city": "洛杉矶"},
    {"name": "Eve", "country": "美国", "province": "纽约州", "city": "纽约"},
]

# 构建地理层级结构
geo_tree = tree()
for stu in data:
    c = stu["country"]
    p = stu["province"]
    ct = stu["city"]
    geo_tree[c][p][ct]["students"] = geo_tree[c][p][ct].get("students", [])
    geo_tree[c][p][ct]["students"].append(stu["name"])

这一段其实是我最喜欢的做法:用defaultdict搞层级树,比你每次判断“有没有这个 key”方便多了,而且代码清爽!

重点来了,我们要的不是学生名单,而是人数统计,所以还得做一轮递归遍历,统计每个节点下的学生数量。

defcount_students(node):
if"students"in node:
return len(node["students"])
    total = 0
for k in node:
        total += count_students(node[k])
    node["count"] = total
return total

count_students(geo_tree)

这步一递归,所有节点就都标上了count字段,再输出一下就齐活了:

defprint_report(node, indent=0):
for k in node:
if k == "students":
continue
        prefix = "  " * indent
        count = node[k].get("count", len(node[k].get("students", [])))
        print(f"{prefix}{k}({count}人)")
        print_report(node[k], indent + 1)

print_report(geo_tree)

输出效果类似这样👇:

中国(3人)
  广东(2人)
    广州(1人)
    深圳(1人)
  浙江(1人)
    杭州(1人)
美国(2人)
  加州(1人)
    洛杉矶(1人)
  纽约州(1人)
    纽约(1人)

像极了部门架构统计?可读性爆棚!这东西用在工作中其实也蛮实用的,比如你做运营分析、用户地域分布、物流网点统计,都能复用这套逻辑。

如果你嫌多层嵌套太重了,其实也可以用Pandas+groupby统计数量再反推嵌套结构,但那种方式更适合生成表格,不如这个适合打印“报告”效果。

总之,这题不难,但很有“复用价值”。感兴趣的朋友可以试试把它封装成通用工具函数,说不定哪天能直接塞进你们的项目里!

-END-

我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领