更新词典以附加文件数据

时间:2012-03-29 14:28:50

标签: python dictionary

我想创建一个用打开文件中的数据更新两个词典的函数。第一个词是一个“人到国家”的词典,第二个词是“人与人”的词典。

例如,“人与国家”类似{'Greg Van' : ['Canada', 'America'], 'Tori Mars' : ['Thailand']},“人与人”字典将为{'Greg Van' : ['Mike Wu', 'Emily Salt'], 'Mia Tan' : ['Sandy Bay', 'Dan Hamilton']}

该功能的参数是 (文件,{string:字符串列表}的字典,{string:字符串列表}的字典} - > NoneType

文本文件类似于:

Chan, Ferah
Canada
Pritchett, Mitchell
Pritchett, Jay

Rad, Sarah
France
America
MacKenzie, Corey

Delgado, Manny
Luong, Sam

Vu, Linda
China
Khan, Jane

每个列表的第一行是一个人,然后列出他们居住的0个或更多国家,以及0个或更多人。每个人之间也会有一个空白行间距。文件中的每个列表/段落都是相互关联的。

我不知道如何使用来自给定文件(包括人,国家和/或人)的数据更新两个现有的词组(“人到国家”和“人对人”)。所以基本上我想将数据附加到两个dicts。

我所知道的是,我可以用逗号来区分国家和人民,因为各国都没有。

1 个答案:

答案 0 :(得分:0)

按照我看到的模式,我可以看出国家和动物之间的区别在于国家是资本化的,所以,你可以做各种各样的事情:你可以有一个字母,每个字母是关键,作为值的元组,在值(元组)中你将有两个列表,一个用于国家,另一个用于宠物。另一种方法是有一个dict而不是元组,dict会有两个元素,我会告诉你这个dict的结构:

    people = {'A': {'countries':['Canada',], 'pets':['dog', 'cat']}}

这将是第一个元素的字典中的映射。代码类似于:

    people = {}
    file_read = open("asdf.in", "r")

    current_person = file_read.readline().strip()

    while current_person:    
        people[current_person] = {}
        line = file_read.readline().strip()
        people[current_person]['countries'] = []
        people[current_person]['pets'] = []
        while line:
            if line.istitle(): people[current_person]['countries'].append(line)
            elif line.islower(): people[current_person]['pets'].append(line)
            line = file_read.readline().strip()

        current_person = file_read.readline().strip()

    print people