Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 文件到字典_Python_Dictionary - Fatal编程技术网

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个值才能解包