鱼C论坛

 找回密码
 立即注册
查看: 2305|回复: 4

[已解决]求详细解析字典,不太明白~

[复制链接]
回帖奖励 3 鱼币 回复本帖可获得 3 鱼币奖励! 每人限 1 次(中奖概率 30%)
发表于 2020-8-14 20:32:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
例如: a.txt
1        a
1        b
3        a
3        c
3        e
4        x
4        y
.......
获得文件b.txt
1        a        b
3        a        c        e
4        x        y
......
用字典的方式,求详解(中间均为Tab分隔)
最佳答案
2020-8-14 21:01:14

看看这个可行不:

  1. # 定义字典
  2. word_dict = {}
  3. # 读取文件内容
  4. with open('a.txt',encoding='utf-8') as file:
  5.     # 切割文件编号与单词
  6.     temp = [i.split() for i in file.read().splitlines()]
  7.     # 通过 for 循环将对应切割后的数据取出
  8.     for key,value in temp:
  9.         # 这里转为 int 型是为了在写入 b 文件时候能进行排序后写入 b 文件
  10.         key = int(key)
  11.         # 判断若键已经在字典中,就添加入对应的值列表中去
  12.         if key in word_dict:
  13.             word_dict[key].append(value)
  14.             continue
  15.         # 反正直接创建个键值对
  16.         word_dict[key] = [value]
  17. # 新建写入 b 文本文件
  18. with open('b.txt','w',encoding='utf-8') as file:
  19.     # 读取字典对应键值,转为列表,以便排序
  20.     item = list(word_dict.items())
  21.     # 这里对编号进行列表排序
  22.     item.sort(key=lambda x:x[0])
  23.     # 最后循环对应的值写入文件中去
  24.     for key,value in item:
  25.         # 这里因为上个文件读取时候转化为了 int 型了,但是写入文件只能为 str 字符串,所以转化为字符串
  26.         key = str(key)
  27.         # 最终写入文件中去,\t 进行分隔,最后加 \n 是为了换行,防止写入一行
  28.         file.write(key+'\t'+'\t'.join(value)+'\n')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-14 20:53:35 | 显示全部楼层

回帖奖励 +3 鱼币

鱼币
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-14 21:01:14 | 显示全部楼层    本楼为最佳答案   

看看这个可行不:

  1. # 定义字典
  2. word_dict = {}
  3. # 读取文件内容
  4. with open('a.txt',encoding='utf-8') as file:
  5.     # 切割文件编号与单词
  6.     temp = [i.split() for i in file.read().splitlines()]
  7.     # 通过 for 循环将对应切割后的数据取出
  8.     for key,value in temp:
  9.         # 这里转为 int 型是为了在写入 b 文件时候能进行排序后写入 b 文件
  10.         key = int(key)
  11.         # 判断若键已经在字典中,就添加入对应的值列表中去
  12.         if key in word_dict:
  13.             word_dict[key].append(value)
  14.             continue
  15.         # 反正直接创建个键值对
  16.         word_dict[key] = [value]
  17. # 新建写入 b 文本文件
  18. with open('b.txt','w',encoding='utf-8') as file:
  19.     # 读取字典对应键值,转为列表,以便排序
  20.     item = list(word_dict.items())
  21.     # 这里对编号进行列表排序
  22.     item.sort(key=lambda x:x[0])
  23.     # 最后循环对应的值写入文件中去
  24.     for key,value in item:
  25.         # 这里因为上个文件读取时候转化为了 int 型了,但是写入文件只能为 str 字符串,所以转化为字符串
  26.         key = str(key)
  27.         # 最终写入文件中去,\t 进行分隔,最后加 \n 是为了换行,防止写入一行
  28.         file.write(key+'\t'+'\t'.join(value)+'\n')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-3 11:12:46 | 显示全部楼层

回帖奖励 +3 鱼币

鱼币
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-9 20:46:54 | 显示全部楼层

回帖奖励 +3 鱼币

学习啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-30 07:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表