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

Python中基于索引关联的双列表元素按对应字符串合并方案

解决Python中字符串关联数值的合并与排序问题

核心思路

利用字典的键值对特性,将字符串作为键,对应的数值累加(或收集)作为值,完成不同列表中同一字符串的数值合并,最后按需求排序并拆分出结果列表。

代码实现

1. 初始化数据

A = [3, 4, 2]
B = [2, 7, 6]
Ai = ["Joe", "John", "Jim"]
Bi = ["John", "Jim", "Joe"]

2. 合并同一字符串的数值(以求和为例)

# 初始化字典存储字符串与合并数值的映射
value_map = {}

# 处理A与Ai的对应关系
for num, name in zip(A, Ai):
    value_map[name] = value_map.get(name, 0) + num

# 处理B与Bi的对应关系
for num, name in zip(B, Bi):
    value_map[name] = value_map.get(name, 0) + num

这里用dict.get()方法简化了判断键是否存在的逻辑,若键不存在则默认返回0,直接累加数值。

3. 排序并拆分结果

# 按合并数值升序排序,数值相同时按字符串升序排序(可选)
sorted_items = sorted(value_map.items(), key=lambda x: (x[1], x[0]))

# 拆分得到排序后的数值列表和对应字符串列表
sorted_values = [item[1] for item in sorted_items]
sorted_names = [item[0] for item in sorted_items]

4. 输出结果

print("排序后的合并数值列表:", sorted_values)
print("对应字符串列表:", sorted_names)

运行结果:

排序后的合并数值列表: [6, 9, 9]
对应字符串列表: ['John', 'Joe', 'Jim']

扩展:收集所有关联数值而非求和

如果需要保留每个字符串对应的所有关联数值(而非求和),只需将字典的值改为列表:

value_map = {}
for num, name in zip(A, Ai):
    value_map.setdefault(name, []).append(num)
for num, name in zip(B, Bi):
    value_map.setdefault(name, []).append(num)

# 按数值列表的总和排序
sorted_items = sorted(value_map.items(), key=lambda x: sum(x[1]))
sorted_value_lists = [item[1] for item in sorted_items]
sorted_names = [item[0] for item in sorted_items]

运行后sorted_value_lists为[[4, 2], [3, 6], [2, 7]],对应字符串列表为['John', 'Joe', 'Jim']。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:10:20