for i in sorted (acronyms):
print(acronyms)
answer = input("\n would you like to see the whole list? (y or n)")
if answer == "y":
print (i, " : ", acronyms[i])
else:
param = input("\n enter 0-9 or A-Z to display those entries: ")
print (i, " : " , acronyms[param])
有没有办法可以更改它或添加另一层功能 打印出字典的一部分(例如,只有A部分)。现在我返回一个错误。我确定这是我调用参数的方式,但我不确定我做错了什么
答案 0 :(得分:2)
这里有几个问题,并且您的代码因您不一定期望的原因而无法运行。
首先,您使用的数据结构是字典,而不是库。
我认为情况是你有一个像acronyms={'NASA': 'National Aeronautics and Space Administration', 'ESA': 'European Space Agency', 'JAXA': 'Japan Aerospace Exploration Agency'}
这样的字典,并且你想让用户选择打印所有首字母缩略词,或者只打印一些带有某些首字母的部分。如果情况并非如此,请告诉我。
让我们从你的代码开始:
for i in sorted (acronyms):
print(acronyms)
answer = input("\n would you like to see the whole list? (y or n)")
if answer == "y":
print (i, " : ", acronyms[i])
else:
param = input("\n enter 0-9 or A-Z to display those entries: ")
print (i, " : " , acronyms[param])
你有一个正确的想法,通过for循环来完成首字母缩略词,但你做得太早了。您想要循环以打印首字母缩略词,但为了做到这一点,您需要知道用户想要的首先。我认为print(acronyms)
可能来自您的调试。但是,首先,让我们回过头来解决如何打印清单的问题。如果我们只想打印整个列表,那就很容易了。我们将循环使用您的print语句:
for i in sorted(acronyms):
print(i, " : ", acronyms[i])
但是这里有一些评论:不要在函数和它们的参数之间放置空格。这是Python中糟糕的形式。此外,在提问时,请务必注意您是使用Python 2还是3:大多数人使用2,而您似乎使用的是3,这会对打印等内容产生许多不兼容的更改。
现在,如果我们在这里有一个param
,并且只想打印首字母缩写词呢?显而易见的事情是在经历时添加条件:
for i in sorted(acronyms):
if i[0]==param: print(i, " : ", acronyms[i])
或者,我们可以从所有首字母缩写词alist = sorted(acronyms)
的列表开始,然后使用列表推导过滤它:alist = [ x for x in alist if x[0]==param]
。这也将使我们的代码更紧凑,更少冗余。
现在让我们在输入中添加回来。我们将询问用户他们想要打印什么,然后我们将过滤列表,使用它来使我们的列表循环,然后我们将循环并打印:
answer = input("\n would you like to see the whole list? (y or n)")
if answer == 'y':
alist = sorted(acronyms)
else:
# You really should check for 'n', though,
# and have an else that gives an error otherwise.
param = input("\n enter 0-9 or A-Z to display those entries: ")
alist = [ x for x in sorted(acronyms) if x[0] == param ]
for i in alist:
print(i, " : ", acronyms[i])
答案 1 :(得分:0)
我认为你可能会混淆现实世界的词典和Python词典。
在Python中,字典有一个唯一键,为其分配了一个值。你的代码似乎不适合这个,因为你会在每个字母下面有多个条目吗?