如何从python中的文本文件创建字典?
我想从python中的文本文件创建一个字典。我的文本文件是:如何从python中的文本文件创建字典?,python,list,file,dictionary,text,Python,List,File,Dictionary,Text,我想从python中的文本文件创建一个字典。我的文本文件是: John Doe Apples Bananas Oranges Jane Dear Apples Bananas Peaches Name Fruit Fruit ..... Fruit empty line Name Fruit ..... 文本文件的格式为: John Doe Apples Bananas Oranges Jane Dear Apples Bananas Peaches Name Fruit Fr
John Doe
Apples
Bananas
Oranges
Jane Dear
Apples
Bananas
Peaches
Name
Fruit
Fruit
.....
Fruit
empty line
Name
Fruit
.....
文本文件的格式为:
John Doe
Apples
Bananas
Oranges
Jane Dear
Apples
Bananas
Peaches
Name
Fruit
Fruit
.....
Fruit
empty line
Name
Fruit
.....
我想返回一个字典,其中水果作为键,名称作为值,例如:
{"Apples":["John Doe", "Jane Dear"], "Bananas":["John Doe", "Jane Dear"], "Peaches":["Jane Dear"], "Oranges":["John Doe"]}
我只是不完全确定如何格式化文本文件。提前谢谢
编辑:到目前为止我做了什么
def common(text):
x = open(text, "r")
a = {}
b = []
line = x.readline()
while line != "":
b.append(line)
line = courses.readline()
return b
def create_dict(lst):
a = []
b = {}
names = []
fruits = []
while lst != []:
if " " in lst[1]:
names += lst[1]
else:
fruits += lst[1]
这就是我有点迷茫的地方…文本文件的格式需要更清晰一点。为了回答这个问题,我假设文本文件的格式是这样的
NAME_1
FRUIT_1
FRUIT_2
FRUIT_3
NAME_2
FRUIT_1
FRUIT_2
FRUIT_3
.
.
NAME_3
.
.
.
现在,如果是这种情况,即水果名称后总是有一个双行分隔符('\n\n'),并且序列总是以人名开头,那么下面是一种填充此词典的方法
with open('/path/to/file', 'r') as handle:
text = handle.read()
text = text.split('\n\n')
result = dict()
for item in text:
item = item.split('\n')
for fruit in item[1:]:
if fruit in result.keys():
result[fruit].append(item[0])
else:
result[fruit] = [item[0]]
希望这对您有所帮助您可以使用一些方便的实用工具(如和)执行以下操作:
条件理解根据是否为空的属性将文件中的行分组,然后只接受非空行组(
如果为k
)。后续使用defaultdict
可以避免一些不规则的代码来检查键是否已经存在。请显示您迄今为止的尝试。text=handle.read()
显示错误,请检查版本以及以写模式打开的文件的问题,现在已修复。仍然没有结果您可以共享您正在使用的文本文件吗?我已经使用了您的文件示例。结果如下<代码>{'FRUIT_1':['NAME_1','NAME_2'],'FRUIT_2':['NAME_1','NAME_2'],'FRUIT_3':['NAME_1','NAME_2'],'':['NAME_2']