如何从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

我想从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 
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']