我试图在python中操作一个字典,所以我可以打印它的一部分

时间:2015-05-03 19:42:42

标签: python

 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部分)。现在我返回一个错误。我确定这是我调用参数的方式,但我不确定我做错了什么

2 个答案:

答案 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中,字典有一个唯一键,为其分配了一个值。你的代码似乎不适合这个,因为你会在每个字母下面有多个条目吗?