Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 父子姓名词典,带有用户选项,并输出儿子、父亲或祖父的姓名_Python_Dictionary - Fatal编程技术网

Python 父子姓名词典,带有用户选项,并输出儿子、父亲或祖父的姓名

Python 父子姓名词典,带有用户选项,并输出儿子、父亲或祖父的姓名,python,dictionary,Python,Dictionary,我试图把这个文件做成两个字典,以便用户输入访问,我完全迷路了。遗憾的是,我已经为此工作了几个星期了。我已经阅读了文件,并且知道如何设置输入选项,只是不知道如何根据用户选项和名称获取特定名称 以下是我迄今为止的代码: sonfather = {} fatherson = {} names = open('names.dat', 'r') sonfather = names.read().split(',') print sonfather print "Father/Son Finder" p

我试图把这个文件做成两个字典,以便用户输入访问,我完全迷路了。遗憾的是,我已经为此工作了几个星期了。我已经阅读了文件,并且知道如何设置输入选项,只是不知道如何根据用户选项和名称获取特定名称

以下是我迄今为止的代码:

sonfather = {}
fatherson = {}
names = open('names.dat', 'r')
sonfather = names.read().split(',')

print sonfather

print "Father/Son Finder"
print "0 - Quit"
print "1 - Find a Father"
print "2 - Find a Grandfather"
print "3 - Find a Son"
print "4 - Find a Grandson"
print "5 - List of names"

control = ""
while control != "quit":
    choice = input("Enter your choice here: ")
    if choice == 0:
        control = "quit"
    elif choice == 1:
        print input("Enter the name of the son :")
您必须了解对象的类型,以便正确使用与之相关的任何词典。因为你不会得到字典类型的东西,除非它是字典类型

sondave
在打印时是一个列表。它是一个包含字符串的列表

你需要对这个列表做些什么,这将“改变”它成为一本字典。仅仅因为它有
“KEY:VALUE”
,并不意味着它是一本字典。这是一根绳子

因此,对于初学者,您可能希望在冒号处拆分它们

sonfather = [x.split(':') for x in sonfather]
这个
[blabla中的x代表x]
是列表理解,它可能有点高级。。。但它的作用与此相同:

new_sonfather = []
for item in sonfather:
    new_sonfather.append(item.split(":"))
sonfather = new_sonfather
这将迭代
sonfather
中的每个项目,并将其替换为以下形式的列表
“子:父”
将变成
[“子”,“父”]

然后你有一个像这样的东西

sonfather=['son1','father1',['son2','father2',['son3','father3',['son4','father4']

这几乎就是你想要的

然后它在这里变得超级神奇

从这里把那个笨蛋变成字典

son_father_dictionary = dict(sonfather)
啊,儿子

在这一点上,它是字典俱乐部的正式会员

所以如果你要做一些疯狂的事情,比如:

print(son_father_dictionary['son1'])

输出将是父1

,很难看出您正试图通过此实现什么。你能提供输入和期望的输出吗?输入应该是说用户想要找到一个父亲。然后会提示他/她输入儿子的名字。以儿子的名字,它将返回父亲的名字。当我印《十四行诗》的时候,我得到了:['john:fred','fred:bill','sam:tony','jim:william','william:mark','krager:holdyn','danny:brett','danny:issak','danny:jack','blasen:zade','david:dieter','adam:seth','seth:enos',不是那样,文件输入。我对你问的问题有点困惑。我对很多问题都感到困惑。哈哈,这很有道理。我已经被困在第一部分很久了。但是如何从父亲的名字中输出祖父的名字呢?假设用户想从输入的名字['son1']中知道祖父的名字。你可以用两种不同的方法来做到这一点。最简单(但最难阅读)的方法是用同样的方法制作另一本字典,可能称之为
父辈字典
,然后进行
打印(父辈字典[父辈字典['son1']])
。如果您创建了一个具有属性“父”和“子”的对象,然后创建了一些方法来确定谁是下一个继承人(并添加子/父),那么您将获得更好的运气和功能,但这一过程将涉及到对整个代码的彻底修改。此外,您还需要学习如何使用类/对象……我尝试的方法根本不起作用。son=原始输入(“输入儿子的名字:”)如果son在son\u父\u字典中:son父=son\u父[son]
print(son_father_dictionary['son1'])