从文本文件在python中创建字典

时间:2013-01-24 20:20:04

标签: python dictionary

我有一个看起来像这样的文本文件:

01:Pronoun
02:I
03:We
04:Self
05:You
06:Other
07:Negate
08:Assent
09:Article
10:Preps
11:Number
12:Affect
...

现在我想制作一本这样的字典..这样的字典:

{'01:': ['pronoun'], '02': ['I'],...}

这是我到目前为止所获得的代码,但它似乎并不像我想要的那样......

with open ('LIWC_categories.text','rU') as document1:
    categoriesLIWC = {}
    for line in document1:
        line = line.split()
        if not line:
            continue
        categoriesLIWC[line[0]] = line[1:]

4 个答案:

答案 0 :(得分:0)

如果您不想包含冒号,可以在冒号上拆分以获取密钥和值

key, value = line.split(':')

答案 1 :(得分:0)

我认为你有一个更大的问题。你想做什么,为什么选择这种方法?

一对评论:

  • 键是序列号的字典与列表没有太大区别。为什么不使用清单?

  • 数字01和1是相同的数字。如果你的钥匙是数字, 你无法区分这两者。

  • 您无法轻易地将键为数字的字典与a进行比较 字典,其中键是数字的字符串表示。

这将创建一个字典,其中包含键的整数和值的字符串:

with open ('LIWC_categories.text','rU') as document1:
    categoriesLIWC = {}
    for line in document1:
        line = line.strip()
        if not line:
            continue
        key, value = line.split(':')
        if key.isdigit():
            categoriesLIWC[int(key)] = value
        else:
            categoriesLIWC[key] = value

如果它不起作用,您需要更具体。什么不起作用?你有什么期待,你得到了什么?

答案 2 :(得分:0)

您需要将分隔符字符串传递给split()。在这种情况下,它将是“:”。

string.split()会自动拆分空格,但你的行上没有空格。如果你想要:在键中,你总是可以用

连接它
categoriesLIWC[line[0] + ":"] = line[1]

另外

line[1:]

应该是

line[1]

答案 3 :(得分:0)

In [27]: dic={}

In [28]: with open("abc.txt") as f:
    for line in f:
        if line.strip():                 #if line is not empty
            k,v=line.split(":")          #split at ":" not at whitespaces
            dic[k]=[v.strip()]           #add to dict
   ....:             

In [29]: dic
Out[29]: 
{'01': ['Pronoun'],
 '02': ['I'],
 '03': ['We'],
 '04': ['Self'],
 '05': ['You'],
 '06': ['Other'],
 '07': ['Negate'],
 '08': ['Assent'],
 '09': ['Article'],
 '10': ['Preps'],
 '11': ['Number'],
 '12': ['Affect']}