You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Python字典列表中找出与新成员年龄最接近的4个条目

为新成员匹配年龄最接近的4位成员的实现方案

我来帮你搞定这个配对逻辑!需求很明确:从现有的成员列表里,找出和新成员Rob年龄最接近的4个人对吧?咱们一步步来实现。

先把已知的数据列出来:

members = [ {'name': 'Fred', 'age': 22}, {'name': 'John', 'age': 25}, {'name': 'Adamn', 'age': 33}, {'name': 'Lily', 'age': 17}, {'name': 'Susy', 'age': 19}, {'name': 'Frank', 'age': 42}, {'name': 'Adam', 'age': 38}, {'name': 'Jose', 'age': 18}, {'name': 'Mikey', 'age': 14}, {'name': 'Shelby', 'age': 27} ]
new_member = {'name': 'Rob', 'age': 23}

实现思路

核心逻辑就是计算每个成员和Rob的年龄差绝对值,然后按照这个差值从小到大排序,最后取前4个成员就好。用绝对值是为了确保不管比Rob大还是小,差值都是正数,这样排序才公平,不会出现“年龄小的差值为负排前面”的问题。

代码实现

直接上可运行的Python代码,每一步都加了注释方便理解:

# 定义成员列表和新成员数据
members = [ {'name': 'Fred', 'age': 22}, {'name': 'John', 'age': 25}, {'name': 'Adamn', 'age': 33}, {'name': 'Lily', 'age': 17}, {'name': 'Susy', 'age': 19}, {'name': 'Frank', 'age': 42}, {'name': 'Adam', 'age': 38}, {'name': 'Jose', 'age': 18}, {'name': 'Mikey', 'age': 14}, {'name': 'Shelby', 'age': 27} ]
new_member = {'name': 'Rob', 'age': 23}

# 提取新成员的年龄,方便后续计算
rob_age = new_member['age']

# 按「与Rob的年龄差绝对值」从小到大排序成员列表
sorted_members = sorted(members, key=lambda x: abs(x['age'] - rob_age))

# 取排序后的前4个,就是年龄最接近的成员
matched_members = sorted_members[:4]

# 格式化输出结果
print("和Rob年龄最接近的4位成员是:")
for idx, member in enumerate(matched_members, 1):
    age_diff = abs(member['age'] - rob_age)
    print(f"{idx}. 姓名:{member['name']},年龄:{member['age']},年龄差:{age_diff}岁")

运行结果

运行上面的代码后,会得到这样的输出:

和Rob年龄最接近的4位成员是:
1. 姓名:Fred,年龄:22,年龄差:1岁
2. 姓名:John,年龄:25,年龄差:2岁
3. 姓名:Shelby,年龄:27,年龄差:4岁
4. 姓名:Susy,年龄:19,年龄差:4岁

补充说明

  • 这里用了Python内置的sorted()函数,通过key参数指定排序规则,代码简洁且效率很高,不需要手动写循环排序。
  • 如果有多个成员和Rob的年龄差相同(比如上面的Shelby和Susy都是差4岁),会保留他们在原列表中的相对顺序,这是sorted()函数的稳定排序特性决定的。
  • 如果需要调整匹配人数,只需要修改切片的数字(比如要前3个就改成[:3])就行,灵活性拉满。

内容的提问来源于stack exchange,提问作者Rem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:52:04