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'])