Python 文件到字典
可能重复:Python 文件到字典,python,dictionary,Python,Dictionary,可能重复: 我一直在浏览这个网站,绞尽脑汁,但我就是找不到答案。 我有一个与数字匹配的单词文件,以“*”分隔。 现在我必须找到一种方法,将这个文件转换成python中的字典,从另一个文本中查找单词,并从字典文件中赋值 我知道如何导入纯文本文件,但不知道如何使其“像字典一样” 有人有什么想法吗 谢谢大家假设您的文件是每行一个,例如 chicken*5 dog*3 ... 你能行 with open("path/to/file") as f: data = [line.split("*"
我一直在浏览这个网站,绞尽脑汁,但我就是找不到答案。 我有一个与数字匹配的单词文件,以“*”分隔。 现在我必须找到一种方法,将这个文件转换成python中的字典,从另一个文本中查找单词,并从字典文件中赋值 我知道如何导入纯文本文件,但不知道如何使其“像字典一样” 有人有什么想法吗
谢谢大家假设您的文件是每行一个,例如
chicken*5
dog*3
...
你能行
with open("path/to/file") as f:
data = [line.split("*") for line in f]
data = dict((word, int(cnt)) for (word, cnt) in data)
您能提供一些文件的示例数据吗?以及您迄今为止尝试过的代码示例吗?或者您可以执行
data={word:int(cnt)for line in f for word,cnt in line.split(*)}
这样您就不需要中间列表了。@Volatility,是的,当然可以。我倾向于在同一个列表理解中避免对s使用多个,但在这种情况下,我同意您的解决方案非常可读dict
理解也很酷(对于Python>=2.7)嘿@Tom,谢谢你的帮助,但是如果我尝试你的代码,我会得到错误:ValueError:需要超过1个值才能解包。你知道这是怎么回事吗?你的文件中有不符合*格式的行吗?也许是空行?通过对第二行中的f if line.strip()]中的行执行[line.split(“*”)
可以很容易地忽略空行。我得到了相同的错误:data=dict((word,int(cnt))for(word,cnt)in data)ValueError:需要超过1个值才能解包