鱼C论坛

 找回密码
 立即注册
查看: 1946|回复: 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

看看这个可行不:
# 定义字典
word_dict = {}
# 读取文件内容
with open('a.txt',encoding='utf-8') as file:
    # 切割文件编号与单词
    temp = [i.split() for i in file.read().splitlines()]
    # 通过 for 循环将对应切割后的数据取出
    for key,value in temp:
        # 这里转为 int 型是为了在写入 b 文件时候能进行排序后写入 b 文件
        key = int(key)
        # 判断若键已经在字典中,就添加入对应的值列表中去
        if key in word_dict:
            word_dict[key].append(value)
            continue
        # 反正直接创建个键值对
        word_dict[key] = [value]
# 新建写入 b 文本文件
with open('b.txt','w',encoding='utf-8') as file:
    # 读取字典对应键值,转为列表,以便排序
    item = list(word_dict.items())
    # 这里对编号进行列表排序
    item.sort(key=lambda x:x[0])
    # 最后循环对应的值写入文件中去
    for key,value in item:
        # 这里因为上个文件读取时候转化为了 int 型了,但是写入文件只能为 str 字符串,所以转化为字符串
        key = str(key)
        # 最终写入文件中去,\t 进行分隔,最后加 \n 是为了换行,防止写入一行
        file.write(key+'\t'+'\t'.join(value)+'\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +3 鱼币

鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

看看这个可行不:
# 定义字典
word_dict = {}
# 读取文件内容
with open('a.txt',encoding='utf-8') as file:
    # 切割文件编号与单词
    temp = [i.split() for i in file.read().splitlines()]
    # 通过 for 循环将对应切割后的数据取出
    for key,value in temp:
        # 这里转为 int 型是为了在写入 b 文件时候能进行排序后写入 b 文件
        key = int(key)
        # 判断若键已经在字典中,就添加入对应的值列表中去
        if key in word_dict:
            word_dict[key].append(value)
            continue
        # 反正直接创建个键值对
        word_dict[key] = [value]
# 新建写入 b 文本文件
with open('b.txt','w',encoding='utf-8') as file:
    # 读取字典对应键值,转为列表,以便排序
    item = list(word_dict.items())
    # 这里对编号进行列表排序
    item.sort(key=lambda x:x[0])
    # 最后循环对应的值写入文件中去
    for key,value in item:
        # 这里因为上个文件读取时候转化为了 int 型了,但是写入文件只能为 str 字符串,所以转化为字符串
        key = str(key)
        # 最终写入文件中去,\t 进行分隔,最后加 \n 是为了换行,防止写入一行
        file.write(key+'\t'+'\t'.join(value)+'\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +3 鱼币

鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

回帖奖励 +3 鱼币

学习啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 15:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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