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

Python字典排序输出问题:去除列表括号并合并同值键

问题解决:移除输出中的列表括号与引号,合并相同值的键

你的核心问题是输出时直接使用了列表对象的默认字符串表示,导致出现[]和引号。只需要将列表转换为逗号分隔的字符串即可达到预期效果。

修改方案

方法1:在格式化输出时转换列表为字符串

只需要修改生成file_1a的代码,把列表用, 连接成字符串:

tv_dict = {}
user_input = input()

# 用with语句自动管理文件,更安全
with open(user_input) as file_open:
    file_content = file_open.readlines()

new_content = [x.strip() for x in file_content]  # 用列表推导式简化代码

list_len = len(new_content) // 2
loop_cy = 1
k = -1
v = -2

while loop_cy <= list_len:
    key = new_content[k]
    value = new_content[v]
    tv_dict[key] = value
    k += 2
    v += 2
    loop_cy += 1

val_sort1 = {k:[v for v in tv_dict.keys() if tv_dict[v] == k] for k in set(tv_dict.values())} 
val_sort2 = dict(sorted(val_sort1.items(), key=lambda val:val[0]))

# 关键修改:用', '.join(v)把列表转成逗号分隔的字符串
file_1a = ''.join("{}: {}\n".format(k, ', '.join(v)) for k, v in val_sort2.items())
print(file_1a)

方法2:构建字典时直接生成字符串

也可以在创建val_sort1的时候就把列表转换成字符串,后续直接输出即可:

tv_dict = {}
user_input = input()

with open(user_input) as file_open:
    file_content = file_open.readlines()

new_content = [x.strip() for x in file_content]

list_len = len(new_content) // 2
loop_cy = 1
k = -1
v = -2

while loop_cy <= list_len:
    key = new_content[k]
    value = new_content[v]
    tv_dict[key] = value
    k += 2
    v += 2
    loop_cy += 1

# 直接生成逗号分隔的字符串,而非列表
val_sort1 = {k: ', '.join([v for v in tv_dict.keys() if tv_dict[v] == k]) for k in set(tv_dict.values())} 
val_sort2 = dict(sorted(val_sort1.items(), key=lambda val:val[0]))

file_1a = ''.join("{}: {}\n".format(k, v) for k, v in val_sort2.items())
print(file_1a)

额外优化建议

  • 使用with open(...)语句处理文件,避免忘记关闭文件导致资源泄漏
  • 用列表推导式new_content = [x.strip() for x in file_content]替代循环append,代码更简洁高效
  • 构建tv_dict的逻辑可以进一步简化,比如用步长为2的循环遍历(注意需匹配你的文件内容顺序):
# 替代原来的while循环,更简洁
for i in range(0, len(new_content), 2):
    value = new_content[i]
    key = new_content[i+1]
    tv_dict[key] = value

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:15:17