Python 表显示代码显示错误的列

Python 表显示代码显示错误的列,python,Python,我写了一个程序,显示哪些国家在人类发展方面被划分为“非常高”、“高”、“中”或“低”。国家将分为以下几类: [0.903, 'Very High'] [0.895, 'Very High'] [0.856, 'Very High'] [0.763, 'Very High'] [0.743, 'High'] [0.649, 'High'] [0.55, 'High'] [0.473, 'Medium'] [0.518, 'High'] “非常高”,0.75

我写了一个程序,显示哪些国家在人类发展方面被划分为“非常高”、“高”、“中”或“低”。国家将分为以下几类:

[0.903, 'Very High']
[0.895, 'Very High']
[0.856, 'Very High']
[0.763, 'Very High']
[0.743, 'High']
[0.649, 'High']
[0.55, 'High']
[0.473, 'Medium']
[0.518, 'High']
  • “非常高”,0.75
  • “高”,0.51
  • “中等”…,0.26
  • “低”HDI<0.26
  • 结果应该如下所示:

    Country  HDI score
    Japan 0.903
    Finland 0.895
    Qatar 0.856
    Lebanon 0.763
    Armenia 0.743
    Iraq 0.649
    Pakistan 0.550
    Djibouti 0.473
    Cameroon 0.518
    
    ['Pakistan', 'High']
    ['Qatar', 'Very High']
    ['Iraq', 'High']
    ['Armenia', 'High']
    ['Japan', 'Very High']
    ['Finland', 'Very High']
    ['Lebanon', 'Very High']
    ['Djibouti', 'Medium']
    ['Cameroon', 'High']
    
    我用这段代码写了:

    Country=   ["Japan","Finland","Qatar","Lebanon","Armenia","Iraq","Pakistan",
                "Djibouti","Cameroon"]
    Country[0]=0.903
    Country[1]=0.895
    Country[2]=0.856
    Country[3]=0.763
    Country[4]=0.743
    Country[5]=0.649
    Country[6]=0.550
    Country[7]=0.473
    Country[8]=0.518
    for Country in Country:
        if Country>0.76:
            print [Country, "Very High"]
        elif 0.76>Country>0.51:
            print [Country,"High"]
        elif 0.51>Country>0.26:
            print [Country,"Medium"]
        elif Country < 0.26:
            print [Country,"Low"]
    

    我不明白我在这里遗漏了什么,为什么它会打印HDI而不是国家的名称,尽管我首先介绍了国家的名称。

    这里似乎有一些地方出了问题

    您可以将
    用于国家/地区中的国家/地区
    。。陈述…(让我很困惑)。无论如何,请使用国家/地区作为列表名:

    Countries = ["Japan","Finland","Qatar","Lebanon","Armenia","Iraq","Pakistan",
                 "Djibouti","Cameroon"]
    
    Countries[0]=0.903  # overriding in Countries the 'Japan' Country name with the value '0.903'
    ... snippet...
    
    for Country in Countries:
        ...snippet...
    
    你也几乎混合了清单和口述。让我们坚持列表+元组

    尝试:

    然后你会得到:

    for country in Countries:
        my_country_name  = country[0]
        my_country_value = country[1]
    
        if my_country_value >0.76:
            print [my_country_name, "Very High"]
        elif ... :
            print ...
        etc..
        ..snippet...
    

    享受吧

    您使用的是
    列表
    来定义国家及其人类发展指数,但在输入人类发展指数值时,您是在修改列表,而不是为每个国家附加一个值

    让我们快速了解一下您早期的几个步骤:

    Country = ["Japan",
               "Finland", 
               "Qatar",
               "Lebanon",
               "Armenia",
               "Iraq",
               "Pakistan",
               "Djibouti",
               "Cameroon"]
    
    如果我定义了它,然后在Python shell中打印出来:

    > print Country
    ['Japan', 'Finland', 'Qatar', 'Lebanon', 'Armenia', 'Iraq', 'Pakistan', 'Djibouti', 'Cameroon']
    
    一切看起来都很好

    但如果我运行下一行代码:

    > Country[0]=0.903 
    
    我们再把它打印出来:

    > print Country
    [0.903, 'Finland', 'Qatar', 'Lebanon', 'Armenia', 'Iraq', 'Pakistan', 'Djibouti', 'Cameroon']
    
    我们刚刚用
    0.903
    替换了
    Japan
    ,因为您在执行
    Country[0]
    时替换了
    Country
    列表中的原始值

    因此,你真正想要的是将每个国家与各自的人类发展指数值联系起来。实现这一点的一种方法是使用,它将某个东西与另一个东西关联起来

    使用字典的基本语法是:

    countries = { 'Japan': 0.903,
                  'Finland': 0.895,
                  # etc
                }
    
    然后可以按键对其进行迭代,并使用值。下面是适合于使用字典的代码,它使用字典的键和值在字典中进行迭代

    countries = {
        'Japan': 0.903,
        'Finland': 0.895,
        'Qatar': 0.856,
        'Lebanon': 0.763,
        'Armenia': 0.743,
        'Iraq': 0.649,
        'Pakistan': 0.550,
        'Djibouti': 0.473,
        'Cameroon': 0.518
    }
    
    for country, hdi in countries.iteritems():
        if hdi > 0.76:
            print [country, "Very High"]
        elif 0.76 > hdi > 0.51:
            print [country,"High"]
        elif 0.51 > hdi > 0.26:
            print [country,"Medium"]
        elif hdi < 0.26:
            print [country,"Low"]
    
    您会注意到订单与原始列表不同。普通词典不保持插入顺序

    注意我做的一些风格上的事情:

    • 我对变量使用小写名称
    • 我不使用同一个变量来指代不同的事情,就像您为
      国家所做的那样
    • 数学比较中的更多间距
    或。。。
    Country
    是一个列表,您首先将国家名称放入其中,然后用HDI覆盖列表中的每个项目。您需要定义一个嵌套结构,而不是单一的平面数组。您将国家定义为一个列表:
    Country=[“日本”、“芬兰”…]
    当您看起来想要一本字典时:
    Country={“日本”:0.903,“芬兰”:0.895,…}
    ['Pakistan', 'High']
    ['Qatar', 'Very High']
    ['Iraq', 'High']
    ['Armenia', 'High']
    ['Japan', 'Very High']
    ['Finland', 'Very High']
    ['Lebanon', 'Very High']
    ['Djibouti', 'Medium']
    ['Cameroon', 'High']
    
    country = [
        ("japan", 0.903),
        ("Finland", 0.895),
        ("Qatar", 0.856),
        ("Lebanon", 0.763),
        ("Armenia", 0.743),
        ("Iraq", 0.649),
        ("Pakistan", 0.550),
        ("Djibouti", 0.473),
        ("Cameroon", 0.518)
    ]
    
    v1 = ''
    for c, v in country:
        if v < 0.26:
            v1 = "very low"
        elif v > 0.26 and v < 0.51:
            v1 = "low"
        elif v > 0.51 and v < 0.76:
            v1 = "High"
        else:
            v1 = "Very High"
        print("{:10} {:6} {:10}".format(c, v, v1))
    
    japan       0.903 Very High 
    Finland     0.895 Very High 
    Qatar       0.856 Very High 
    Lebanon     0.763 Very High 
    Armenia     0.743 High      
    Iraq        0.649 High      
    Pakistan     0.55 High      
    Djibouti    0.473 low       
    Cameroon    0.518 High