打印某些键的最佳方法是什么?

时间:2019-04-17 17:13:46

标签: python dictionary

我有一个项目,要求我创建一个country:capital电子表格,例如美国| excel中的D.C.问题在于一些关键地区是没有首都的大洲和地区。我如何只打印国家?

    for ctry in countries:
        print(f'{ctry["name"]:30}{ctry["capitalCity"]}')

导致:

        Middle East & North Africa (IDA & IBRD countries)
        Tonga                         Nuku'alofa
        South Asia (IDA & IBRD)       
        Sub-Saharan Africa (IDA & IBRD countries)
        Trinidad and Tobago           Port-of-Spain

编辑:阅读评论后,我意识到我没有提供足够的信息,因此我将尝试在此处填补这些空白。我从世界银行API(http://api.worldbank.org/v2/country?format=json&per_page=400)中获得了国家词典,该列表还包括各大洲和地区。我写了一个if语句,

     if ctry['capitalCity'] in ctry:
        print(f'{ctry["name"]:20}{ctry["capitalCity"]}')
    else:
        print('not working')

我在这里的思考过程是,如果我使用'in',则if语句将只能打印具有相应值的键,但是那没有用,所以我来到了这里。很抱歉缺少信息,但是感谢您的所有建议。

2 个答案:

答案 0 :(得分:1)

假设countries是包含国家,大陆和领地的词典的列表,并且各大陆和领地没有'capitalCity'元素(或一个解析为False的元素,如None):< / p>

actual_countries = [c for c in countries if c.get('capitalCity')]

现在actual_countries中的所有内容都是带有capitalCity元素的内容。

答案 1 :(得分:0)

从您的问题开始-> 一些键是没有首都的大洲和地区。

这意味着您的国家可能看起来像这样,其中各大洲的首都(例如亚洲)为空,首都(例如澳大利亚)为空,或者首都(例如北美)都不存在。

因此,根据上述假设,以下国家/地区中有3种(空,无,无密钥)情况。

countries = [{'name':'India','capitalCity':'New Delhi'},{'name':'US','capitalCity':'Washington'},{'name':'Australia','capitalCity':None},{'name':'Albania','capitalCity': 'Tirana'},{'name':'Algeria','capitalCity':'Algiers'}, {'name':'Angola', 'capitalCity': 'Luanda'},{'name':'Asia','capitalCity': ''}, {'name':'North America'}]

您可以在下面的代码中尝试跳过大洲/地区。

for ctry in countries:
    if ctry.get('capitalCity'):
        print(f'{ctry["name"]:30}{ctry["capitalCity"]}')