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