是否有一个简单的单行程序可以在不使用CSV的情况下将Python中的文本文件转换为字典?

是否有一个简单的单行程序可以在不使用CSV的情况下将Python中的文本文件转换为字典?,python,file,dictionary,text,Python,File,Dictionary,Text,我有一个10000行的文件名为“number_file”,像这样有四列数字 12123 12312321 12312312 12312312 12123 12312321 12312312 12312312 12123 12312321 12312312 12312312 12123 12312321 12312312 12312312 我需要将文件转换为一个字典,其中第一列的数字是键,整行是值 到目前为止,我试过这个,但没有成功 dict((line.strip().split('\t')[

我有一个10000行的文件名为“number_file”,像这样有四列数字

12123 12312321 12312312 12312312
12123 12312321 12312312 12312312
12123 12312321 12312312 12312312
12123 12312321 12312312 12312312
我需要将文件转换为一个字典,其中第一列的数字是键,整行是值

到目前为止,我试过这个,但没有成功

dict((line.strip().split('\t')[0] for line in file(number_file)))

如何修复这一行程序,使其将文件转换为字典?

您可以使用以下命令:

with open(number_file) as fileobj:
    result = {row[0]: row[1:] for line in fileobj for row in (line.split(),)}
其中(一个元素元组)中的行的
实际上是一个赋值

也可以使用嵌套生成器表达式来处理每行的拆分:

with open(number_file) as fileobj:
    result = {row[0]: row[1:] for row in (line.split() for line in fileobj)}
但是,如果您的文件确实是以制表符分隔的,则不要担心
csv
模块:

import csv

with open(number_file) as fileobj:
    result = {row[0]: row[1:] for row in csv.reader(fileobj, delimiter='\t')}
split()

with open(file_name) as f:
    data = dict(line.strip().split(maxsplit=1) for line in f)

您这样做是为了删除重复项吗?如果是,您可以使用集合。@MrDoe777:您是如何测试的?考虑到您的操作系统将在第一次读取文件后缓存该文件。在缓存后运行这两个文件