2

因此,我应该将其传输到电话簿字典的文件文本如下所示:

姓名 1 姓名 2 号码

姓名 3 姓名 4 号码 2

等等..

我试过的:

def read():

    file1=open("file.txt","r")

    dict={}

    for line in file1:

        line=line.split()

        if not line:continue

        dict[line[0]]=line[1:]

    print(dict)

当我运行它时,它什么也没打印。

谢谢!

4

4 回答 4

1

这是我的方式

def read_dict():
    file1 = open("file.txt", 'r')
    dict={}  

    # read lines of all
    lines = file1.readlines()

    # Process one line at a time.
    for line in lines:
        line = line.split()
        if not line: continue
        dict[line[0]] = line[1:]

    file1.close()
    print(dict)

读字典()

或(使用)您不必关闭文件

def read_dict():
    with open("file.txt", 'r') as file1:
        dict={}  
        # read lines of all
        lines = file1.readlines()
        # Process one line at a time.
        for line in lines:
            line = line.split()
            if not line: continue
            dict[line[0]] = line[1:]
        print(dict)
于 2017-11-28T16:43:39.400 回答
0

很多意见要在这里发表。

1 - 打开文件时忘记添加“.read()”。

2 - 您正在使用 Python 语言的保留字。“dict”是语言使用的东西,所以避免直接使用它。而是更具体地命名它们。不惜一切代价避免使用 Python 语言已经使用的单词来命名变量。

3 - 您的函数不返回任何内容。在每个函数的末尾,您需要指定“return”加上您希望函数返回值的对象。

def read_dict():
    file1 = open("file.txt","r").read()
    my_dict = {}
    for line in file1:
        line = line.split()
        if not line:
            continue
        my_dict[line[0]] = line[1:]
    return my_dict

print(read_dict())
于 2017-11-28T16:30:10.517 回答
0

确保调用该函数。我已经改变了一些,所以它没有使用像“read”或“dict”这样的词。这有效:

def main():
    thefile = open("file.txt","r")
    thedict={}
    for theline in thefile:
        thelist = theline.split(" ")
        if not thelist:
            continue
        thedict[thelist[0]]=thelist[1:]

    print(thedict)

main()

结果是:

{'Name1': ['Name2', 'Numbers\n'], 'Name3': ['Name4', 'Numbers2']}
于 2017-11-28T16:31:26.013 回答
0

您已将实现包含在函数 read() 中。您需要在某处调用该函数。

def read():
  file1=open("file.txt","r")

  dict={}

  for line in file1:

    line=line.split()

    if not line:continue

    dict[line[0]]=line[1:]

  print(dict)

read()

尝试这个。

于 2017-11-28T16:34:25.507 回答