-1

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

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

4 回答 4

0

如果您不希望包含冒号,则可以在冒号上拆分以获取键和值

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

于 2013-01-24T20:22:39.687 回答
0

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

一些评论:

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

  • 数字 01 和 1 是同一个数字。如果您的键是数字,则您无法区分这两者。

  • 您无法轻松地将键是数字的字典与键是数字的字符串表示形式的字典进行比较。

这将创建一个字典,其中键为整数,值为字符串:

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

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

于 2013-01-24T20:25:48.340 回答
0

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

string.split() 将自动拆分空格,但您的行上没有空格。如果您想要 : 在键中,您可以随时将其与

categoriesLIWC[line[0] + ":"] = line[1]

line[1:]

应该

line[1]
于 2013-01-24T20:27:15.100 回答
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']}
于 2013-01-24T20:28:26.820 回答