Синтаксис Cartopy-Python - несколько объектов / стран в одной строке

Я следую этому примеру, Отображение Python в Matplotlib Cartopy Color One Страна. Он полностью работает с несколькими странами, например США, Франция, Великобритания, Япония.

for country in countries:
    if country.attributes['adm0_a3'] == 'USA':
        ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                          facecolor='#008744', alpha = 0.5,
                          label=country.attributes['adm0_a3']),

    if country.attributes['adm0_a3'] == 'FRA':
        ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                          facecolor='#008744', alpha = 0.5,
                          label=country.attributes['adm0_a3']),
+ 'GBR'
+ 'JPN'

else:
    ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                      facecolor=('#c4e6ff'),
                      label=country.attributes['adm0_a3'])

Я хотел бы поместить список стран в одну строку, а не повторять утверждения снова и снова.

Я пытался:

if country.attributes['adm0_a3'] == ['USA', 'FRA', 'GBR', 'JPN']:

И any('USA, 'FRA', 'GBR', 'JPN')

И ['USA or 'FRA' or 'GBR' or'JPN']

И изречение:

myDict = {'USA', 'FRA', 'GBR', 'JPN'}
if country.attributes['adm0_a3'] == myDict:

Очевидно, я не совсем понимаю логику.


person Colman McMahon    schedule 06.07.2016    source источник


Ответы (1)


Вы должны использовать ключевое слово in примерно так:

for country in countries:
    if country.attributes['adm0_a3'] in ['USA', 'FRA', 'GBR', 'JPN']:
        ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                          facecolor=(0, 0, 1),
                          label=country.attributes['adm0_a3'])
    else:
        ax.add_geometries(country.geometry, ccrs.PlateCarree(),
                          facecolor=('#c4e6ff'),
                          label=country.attributes['adm0_a3'])

Это то, что вы искали?

person ajdawson    schedule 08.07.2016
comment
Несколько часов боли за две буквы! : o Спасибо. - person Colman McMahon; 08.07.2016