在嵌套字典中显示键/值对中的文本

时间:2018-08-03 13:49:13

标签: python

我是新手。 我正在尝试将元素周期表中的元素打印到像表本身​​一样排列的屏幕上。我正在使用('-')来分隔尚未在字典中写的符号。我只使用嵌套的字典,总共有两个条目,以最大程度地减少混乱。

Training Source最后练习。

我在其他地方问了这个问题,有人(正确)建议使用str.join(list),但这不是本教程的一部分。 我想教自己,我想了解。没有上学,没有工作,没有教练。

链接教程底部的提示是:

1。“使用for循环遍历每个元素。挑选出元素的行号和列号。”

2。“使用两个嵌套的for循环来打印元素的符号或一系列空格,具体取决于该行的填充程度。”

我想用这种方式解决。提前致谢。 注意*否,请使用中级,中级或高级代码,本教程仅涵盖与变量,字符串,数字,列表,元组,函数(初学者),if语句,while循环,基本终端应用程序和词典有关的代码。 / p>

最后,我想用真实元素周期表的形状来打印表本身。如果您可以为新手投入一些代码,那对您真的很有帮助。

我的尝试(错误):

ptable = {'mercury':{'symbol':'hg','atomic number': '80','row': '6','column': '12','weight':'200.59',}, 'tungsten':{'symbol':'w','atomic number':'74','row':'6','column':'6','weight':'183.84'},}

for line in range(1,7): 
    for key in ptable:
        row = int(ptable[key]['row'])
        column = int(ptable[key]['column'])
        if line != row:
                print('-'*18)
        else:
                space = 18 - column
                print('-'*(column-1)+ptable[key]['symbol']+'-'*space)

输出:

------------------
------------------
------------------
------------------
------------------
------------------
------------------
------------------
------------------
------------------
-----------hg------
-----w------------

输出应该有7行,如元素周期表中所示。应该像在元素周期表中那样在正确的位置显示每个元素的符号。由于我库中只有两个元素,因此应该在正确的位置显示Hg和W

经验丰富的程序员的解决方案:

for line in range(1, 8): # line will count from 1 to 7

# display represents the line of elements we will print later

# hyphens show that the space is empty

# so we fill the list with hyphens at first

display = ['-'] * 18

for key in ptable:
    if int(ptable[key]['row']) == line:
        # if our element is on this line
        # add that element to our list
        display[int(ptable[key]['column']) - 1] = ptable[key]['symbol']

# str.join(list) will "join" the elements of your list into a new string
# the string you call it on will go in between all of your elements
print(''.join(display)) 

1 个答案:

答案 0 :(得分:0)

老实说,我认为这段代码并不难理解,我想尝试对其进行更改只会使其变得更加复杂。我将在最后放置一些链接,以供您检查并了解似乎似乎也不理解的” join()方法和range()函数。您说您想自己学习Python,这真是太好了! (我也正在这样做)但这并不意味着您必须坚持学习教程;)。您可以超越它,也可以跳过不需要的部分,然后在需要时再回来。如果您需要有关方法的说明(例如''.join)或其他任何信息,请告诉我。抱歉,如果对您没有帮助;(。

链接:

The .join() method

The range() function