python中的字典分离

python中的字典分离,python,dictionary,Python,Dictionary,我有一个问题,可能是一个相当简单的解决方案,但我有很多麻烦。我正在制作一个程序,允许用户在一系列文本文件中进行选择,这些文件都是这样的 搜索:米拉尔,巴士 演奏:jugar 将成为:爵士,埃斯塔 跑步:科勒 制作:hacer 交谈:哈布拉 拍摄:托马尔 学习:学习 到达:莱加 练习:练习汽车 这是它们的精确格式,我应该把它们作为键值对放到字典里做一个测试,我设法做到了这一点,但是我遇到了一些问题。其中一个原因是,其中一些,例如搜索,有多个正确答案,我不知道如何为同一个键分配多个不同的值,或者如果

我有一个问题,可能是一个相当简单的解决方案,但我有很多麻烦。我正在制作一个程序,允许用户在一系列文本文件中进行选择,这些文件都是这样的

搜索:米拉尔,巴士

演奏:jugar

将成为:爵士,埃斯塔

跑步:科勒

制作:hacer

交谈:哈布拉

拍摄:托马尔

学习:学习

到达:莱加

练习:练习汽车

这是它们的精确格式,我应该把它们作为键值对放到字典里做一个测试,我设法做到了这一点,但是我遇到了一些问题。其中一个原因是,其中一些,例如搜索,有多个正确答案,我不知道如何为同一个键分配多个不同的值,或者如果可能的话。第二个问题是,这些值的两端有\n,我不知道如何删除它们。即使我这样做了,具有两个选项的键在第二个值上也只有\n

import os
import sys

def file_open():
    file_list=[]
    contents=os.listdir()
    for i in contents:
            
        if '.txt' in i.lower():
            file_list.append(i)
    if file_list==[]:
        sys.exit('Error')    
    print('file list:',
          file_list)
    
    input_file=str(input('enter the input file to use from the ones above'))    
    while True:
        try:
            file=open(input_file,'r')
            break
        except FileNotFoundError:
            print('FileNotFoundError')
            

    return file

def file_read():
    dictionary={}
    for line in file:
        (key,val)=line.split(':')
        dictionary[key]=val


        
        
    return(dictionary)

这是我到目前为止写出来的所有代码,我将非常感谢任何帮助,甚至是一般性的建议。谢谢。

您可以将每个键的答案存储到列表中,例如:

query_answer={
      'to search':['mirar','buscar'],
      'to play':['jugar'],
      'to be':['ser','estar'],...}
在处理这些值之前,您应该删除“\n”:

def file_read(file):
    dictionary={}
    for line in file:
        (key,val)=line.split(':')
        val = val.rstrip("\n")
        dictionary[key] = val.split(',')
    return dictionary

堆栈溢出不是为了替换现有的文档和教程。您已经正确识别了程序的组件技术。在现有的堆栈溢出答案和在线的其他地方,这些问题都得到了很好的解决。我之所以问这个问题,是因为我已经尝试过你提出的方法,但我自己却没有找到与这个问题相关的任何东西。如果你能告诉我一些资源,我将不胜感激,但我没有无限的时间来完成这项工作,也不能花更多的时间在论坛上寻找答案。这不是主要问题,但如果你试图打开的文件不存在,你会有一个循环永远运行。你是不是想把
输入(…)
(不需要用
str()
包装;它总是
str
)放在
里面而
[a代表vals中的a]
vals
已经是
列表的情况下是完全没有意义的(如果不是
列表
,只需调用
列表()
构造函数,而不是执行no op
列表
理解)。只需删除循环的最后三行,并将其替换为
字典[key]=val.split(','))
谢谢这非常有帮助,也帮助我解决了一些理解字典的问题,这是一个额外的奖励。我非常感谢你的帮助,先生。@ShadowRanger:谢谢。我已经删除了最后三行。