我需要在python中使用我的字典程序

时间:2013-11-21 03:11:49

标签: python dictionary

好吧..我正在尝试编写一个程序来创建一个儿子字典:父条目和另一个包含父:子条目的字典。该程序必须向用户提供一个包含五个选项的菜单。

文本文件是这样的:john:fred,fred:bill,sam:tony,jim:william,william:mark,krager:holdyn,danny:brett,danny:issak,danny:jack,blasaen:zade,david:节食者,adamLseth,seth:enos

问题陈述:

编写一个程序,创建一个son的字典:父条目和另一个包含father:son条目的字典。您的程序必须向用户显示包含五个选项的菜单。以下仅为示例:


父亲/儿子查找器

0 - 退出

1 - 找一位父亲

2 - 找一位祖父

3 - 寻找儿子

4 - 找一个孙子


选项0结束程序。

选项1提示用户输入儿子的名字。如果字典包含son:father对,则程序显示父亲。否则,程序应该告诉用户它不知道父亲是谁。

选项2提示用户输入孙子的名字。如果字典包含足够的信息,程序将显示祖父。否则,程序应告诉用户它不知道祖父是谁。

选项3提示用户输入父亲的姓名。如果字典包含son:father对,则程序显示子。否则,程序应告诉用户它不知道儿子是谁。

选项4提示用户输入祖父的姓名。如果字典包含足够的信息,程序将显示孙子。否则,程序应该告诉用户它不知道孙子是谁。

程序必须创建字典结构并根据提供给您的文件中包含的数据填充它。此外,程序必须继续要求用户选择菜单,直到用户选择退出。

到目前为止,我有这个。我还没有走得太远......

sons_fathers = {}
fathers_sons = {}
#open filename: names.dat
fo = open("names.dat", "r")
data = fo.read()
print (data)
for line in fo:

这是流程图:![流程图] [1]

https://jsu.blackboard.com/bbcswebdav/pid-2384378-dt-content-rid-3427920_1/xid-3427920_1

感谢您的帮助。我需要它大声笑。

3 个答案:

答案 0 :(得分:1)

您如何描述您的解决方案,我认为字典不是您想要的。

密钥必须是唯一的。

# wont work, keys aren't unique
father_son = {'danny':'brett', 'danny':'issak', 'danny':'jack'} 

但是,您可以尝试使用列表作为值的字典:

father_son = {'danny':['brett','issak', 'jack']}
if 'danny' in father_son.keys() and 'brett' in father_son['danny']:
    #do something

或者您可以使用存储对的2元组列表:

father_son = [('danny', 'brett'), ('danny', 'issak'), ('danny', 'jack')]
if ('danny', 'brett') in father_son:
    #do something

答案 1 :(得分:1)

让我们希望没有人能为您提供这个家庭作业的精确解决方案。

这里有一些提示,你需要知道你可以用string做些什么,string.split()会对你有所帮助。另外,请阅读dictionary可以执行的操作。您还需要raw_input function

其余的是简单的编程。祝你好运。

答案 2 :(得分:0)

sons_fathers = {}                  # one father per son

fathers_sons = {}                  # one or many sons per father, use list or 
                                   # set for the values

with open("names.dat", "r") as fo: # use context manager to close file automatically
    for line in fo:                # ?? is there only one line, or one pair per line??
        # do something with line

        # assume you extracted "son" and "father"
        sons_fathers[son] = father
        if father in fathers_sons:
            fathers_sons[father].add(son)
        else:
            fathers_sons[father] = {son}