如何在Python上从txt文件创建字典

时间:2019-02-04 20:27:06

标签: python dictionary

这是我拥有的txt文件内容:

salesUnits:500
priceUnit:11
fixedCosts:2500
variableCostUnit:2

我需要在Python中创建一个字典,该字典将读取文件并使键成为salesUnits等,并将值设为数字。到目前为止,我拥有的代码只会打印出可变的单位成本:

with open("myInputFile.txt") as f:
    content = f.readlines()
myDict = {}
for line in content:
    myDict=line.rstrip('\n').split(":")
print(myDict)

如何修复代码,以便显示所有键和值对?谢谢!

3 个答案:

答案 0 :(得分:1)

每次调用myDict=line.rstrip('\n').split(":")时,都会覆盖myDict。添加到字典的模式是dictionary [key] = value。

myDict = {}
with open("myInputFile.txt") as f:
    for line in f:
        key_value = line.rstrip('\n').split(":")
        if len(key_value) == 2:
            myDict[key_value[0]]=key_value[1]
print(myDict)

输出

{'fixedCosts': '2500', 'priceUnit': '11', 'variableCostUnit': '2', 'salesUnits': '500'}

答案 1 :(得分:1)

使用简单的dict理解即可解决此问题:

with open('testinput.txt', 'r') as infile:
    dict = {
        line.strip().split(':')[0]:
        int(line.strip().split(':')[1])
            if line.strip().split(':')[1].isdigit()
        else
        line.strip().split(':')[1]
        for line in infile.readlines()}
print(dict)

输出:

{'salesUnits': 500, 'priceUnit': 11, 'fixedCosts': 2500, 'variableCostUnit': 2}

如果您希望将数字作为简单的字符串输入,只需使用:

    dict = {
        line.strip().split(':')[0]:
        line.strip().split(':')[1]
        for line in infile.readlines()}

请注意,您可以使用以下其他变体来添加对其他数据类型或数据格式的处理:

        int(line.strip().split(':')[1])
        if line.strip().split(':')[1].isdigit()
    else

答案 2 :(得分:0)

myDict = {}

with open('dict.txt', 'r') as file:
    for line in file:
        key, value = line.strip().split(':')
        myDict[key] = value

print myDict

输出:

{'fixedCosts': '2500', 'priceUnit': '11', 'variableCostUnit': '2', 'salesUnits': '500'}