我需要python词典程序的帮助

我需要python词典程序的帮助,python,dictionary,Python,Dictionary,好吧,那么。。我正在尝试编写一个程序,创建一个包含子:父条目的字典和另一个包含父:子条目的字典。程序必须向用户提供一个包含五个选项的菜单 文本文件是:约翰:弗雷德,弗雷德:比尔,山姆:托尼,吉姆:威廉,威廉:马克,克雷格:霍尔顿,丹尼:布雷特,丹尼:伊萨克,丹尼:杰克,布拉森:扎德,大卫:迪特,阿达姆塞思,塞思:伊诺斯 问题陈述: 编写一个程序,创建一个包含子:父条目的字典和另一个包含父:子条目的字典。您的程序必须向用户提供包含五个选项的菜单。以下仅为示例: 父/子查找器 0–退出 1-找一个

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

文本文件是:约翰:弗雷德,弗雷德:比尔,山姆:托尼,吉姆:威廉,威廉:马克,克雷格:霍尔顿,丹尼:布雷特,丹尼:伊萨克,丹尼:杰克,布拉森:扎德,大卫:迪特,阿达姆塞思,塞思:伊诺斯

问题陈述:

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


父/子查找器

0–退出

1-找一个父亲

2–找一位祖父

3-找个儿子

4-找个孙子


选项0结束程序

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

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

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

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

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

到目前为止,我已经做到了这一点。我在这方面没走多远

sons_fathers = {}
fathers_sons = {}
#open filename: names.dat
fo = open("names.dat", "r")
data = fo.read()
print (data)
for line in fo:
这是流程图:![流程图][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

希望没有人能给你这个家庭作业的确切答案

这里有一些提示,您需要知道可以使用string做什么,string.split()将对您有很大帮助。另外,阅读你能用它做什么。您还需要


剩下的就是简单的编程。祝你好运。

我为更好的助手添加了一张图片这显然是个家庭作业问题。提供具体的解决方案只会鼓励更多此类问题。真的吗?他的问题是写一个程序。我提供了两行代码。你的链接在付费墙后面。Stackoverflow的存在是为了提问/回答问题,而不是对家庭作业做出道德判断。你是对的@gnibler。你和其他人可以自由地满足他的要求,但我认为我们不应该这样做。我通过编程学习编程,而不是从SO复制完整的程序。我是为所有我认识的程序员准备的。
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}