#!/usr/bin/python import os, json, math MAX_FILE_SIZE = 500 # units - KB REL_TOL = 6e-04 # relative tolerance for floats ABS_TOL = 15e-03 # absolute tolerance for floats PASS = "PASS" TEXT_FORMAT = "text" # question type when expected answer is a str, int, float, or bool TEXT_FORMAT_NAMEDTUPLE = "text namedtuple" # question type when expected answer is a namedtuple TEXT_FORMAT_UNORDERED_LIST = "text list_unordered" # question type when the expected answer is a list where the order does *not* matter TEXT_FORMAT_ORDERED_LIST = "text list_ordered" # question type when the expected answer is a list where the order does matter TEXT_FORMAT_ORDERED_LIST_NAMEDTUPLE = "text list_ordered namedtuple" # question type when the expected answer is a list of namedtuples where the order does matter TEXT_FORMAT_SPECIAL_ORDERED_LIST = "text list_special_ordered" # question type when the expected answer is a list where order does matter, but with possible ties. Elements are ordered according to values in special_ordered_json (with ties allowed) TEXT_FORMAT_DICT = "text dict" # question type when the expected answer is a dictionary TEXT_FORMAT_LIST_DICTS_ORDERED = "text list_dicts_ordered" # question type when the expected answer is a list of dicts where the order does matter expected_json = {"cell_test1": (TEXT_FORMAT, 'Afghanistan'), "cell_test2": (TEXT_FORMAT, 2020), "cell_test3": (TEXT_FORMAT, 57), "cell_test4": (TEXT_FORMAT, 96), "cell_test5": (TEXT_FORMAT, 'Upper middle income'), "cell_test6": (TEXT_FORMAT, 43851000), "1": (TEXT_FORMAT, "China"), "2": (TEXT_FORMAT, "India"), "3": (TEXT_FORMAT, "Afghanistan"), "4": (TEXT_FORMAT, "Low income"), "5": (TEXT_FORMAT, 6501786000), "6": (TEXT_FORMAT, 52), "7": (TEXT_FORMAT, 871268000), "8": (TEXT_FORMAT, "Low income"), "9": (TEXT_FORMAT_UNORDERED_LIST, ['Bermuda', 'Canada', 'United States of America']), "get_col_dict_test1": (TEXT_FORMAT_DICT, {'AFG': 'South Asia', 'ALB': 'Europe & Central Asia', 'DZA': 'Middle East & North Africa', 'AND': 'Europe & Central Asia', 'AGO': 'Sub-Saharan Africa', 'ARM': 'Europe & Central Asia', 'AUS': 'East Asia & Pacific', 'AUT': 'Europe & Central Asia', 'AZE': 'Europe & Central Asia', 'BGD': 'South Asia', 'BLR': 'Europe & Central Asia', 'BEL': 'Europe & Central Asia', 'BLZ': 'Latin America & Caribbean', 'BEN': 'Sub-Saharan Africa', 'BMU': 'North America', 'BTN': 'South Asia', 'BIH': 'Europe & Central Asia', 'BWA': 'Sub-Saharan Africa', 'BRA': 'Latin America & Caribbean', 'BRN': 'East Asia & Pacific', 'BGR': 'Europe & Central Asia', 'BFA': 'Sub-Saharan Africa', 'BDI': 'Sub-Saharan Africa', 'CPV': 'Sub-Saharan Africa', 'KHM': 'East Asia & Pacific', 'CMR': 'Sub-Saharan Africa', 'CAN': 'North America', 'CAF': 'Sub-Saharan Africa', 'TCD': 'Sub-Saharan Africa', 'CHL': 'Latin America & Caribbean', 'CHN': 'East Asia & Pacific', 'COL': 'Latin America & Caribbean', 'CRI': 'Latin America & Caribbean', 'CIV': 'Sub-Saharan Africa', 'CUB': 'Latin America & Caribbean', 'CYP': 'Europe & Central Asia', 'CZE': 'Europe & Central Asia', 'DNK': 'Europe & Central Asia', 'DJI': 'Middle East & North Africa', 'DOM': 'Latin America & Caribbean', 'ECU': 'Latin America & Caribbean', 'SLV': 'Latin America & Caribbean', 'EST': 'Europe & Central Asia', 'SWZ': 'Sub-Saharan Africa', 'ETH': 'Sub-Saharan Africa', 'FJI': 'East Asia & Pacific', 'FIN': 'Europe & Central Asia', 'FRA': 'Europe & Central Asia', 'GAB': 'Sub-Saharan Africa', 'GEO': 'Europe & Central Asia', 'DEU': 'Europe & Central Asia', 'GHA': 'Sub-Saharan Africa', 'GIB': 'Europe & Central Asia', 'GRC': 'Europe & Central Asia', 'GRL': 'Europe & Central Asia', 'GTM': 'Latin America & Caribbean', 'GIN': 'Sub-Saharan Africa', 'GNB': 'Sub-Saharan Africa', 'GUY': 'Latin America & Caribbean', 'HTI': 'Latin America & Caribbean', 'HND': 'Latin America & Caribbean', 'HUN': 'Europe & Central Asia', 'ISL': 'Europe & Central Asia', 'IND': 'South Asia', 'IDN': 'East Asia & Pacific', 'IRQ': 'Middle East & North Africa', 'IRL': 'Europe & Central Asia', 'ISR': 'Middle East & North Africa', 'JAM': 'Latin America & Caribbean', 'JOR': 'Middle East & North Africa', 'KAZ': 'Europe & Central Asia', 'KEN': 'Sub-Saharan Africa', 'KIR': 'East Asia & Pacific', 'LVA': 'Europe & Central Asia', 'LSO': 'Sub-Saharan Africa', 'LBR': 'Sub-Saharan Africa', 'LTU': 'Europe & Central Asia', 'LUX': 'Europe & Central Asia', 'MDG': 'Sub-Saharan Africa', 'MWI': 'Sub-Saharan Africa', 'MYS': 'East Asia & Pacific', 'MDV': 'South Asia', 'MLI': 'Sub-Saharan Africa', 'MLT': 'Middle East & North Africa', 'MHL': 'East Asia & Pacific', 'MRT': 'Sub-Saharan Africa', 'MUS': 'Sub-Saharan Africa', 'MEX': 'Latin America & Caribbean', 'MCO': 'Europe & Central Asia', 'MNG': 'East Asia & Pacific', 'MNE': 'Europe & Central Asia', 'MAR': 'Middle East & North Africa', 'MOZ': 'Sub-Saharan Africa', 'MMR': 'East Asia & Pacific', 'NAM': 'Sub-Saharan Africa', 'NRU': 'East Asia & Pacific', 'NPL': 'South Asia', 'NLD': 'Europe & Central Asia', 'NZL': 'East Asia & Pacific', 'NIC': 'Latin America & Caribbean', 'NER': 'Sub-Saharan Africa', 'NGA': 'Sub-Saharan Africa', 'MKD': 'Europe & Central Asia', 'NOR': 'Europe & Central Asia', 'OMN': 'Middle East & North Africa', 'PAK': 'South Asia', 'PLW': 'East Asia & Pacific', 'PAN': 'Latin America & Caribbean', 'PNG': 'East Asia & Pacific', 'PRY': 'Latin America & Caribbean', 'PER': 'Latin America & Caribbean', 'PHL': 'East Asia & Pacific', 'POL': 'Europe & Central Asia', 'PRT': 'Europe & Central Asia', 'ROU': 'Europe & Central Asia', 'RUS': 'Europe & Central Asia', 'RWA': 'Sub-Saharan Africa', 'WSM': 'East Asia & Pacific', 'SEN': 'Sub-Saharan Africa', 'SRB': 'Europe & Central Asia', 'SLE': 'Sub-Saharan Africa', 'SGP': 'East Asia & Pacific', 'SLB': 'East Asia & Pacific', 'SOM': 'Sub-Saharan Africa', 'ZAF': 'Sub-Saharan Africa', 'SSD': 'Sub-Saharan Africa', 'ESP': 'Europe & Central Asia', 'LKA': 'South Asia', 'SDN': 'Sub-Saharan Africa', 'SUR': 'Latin America & Caribbean', 'SWE': 'Europe & Central Asia', 'CHE': 'Europe & Central Asia', 'SYR': 'Middle East & North Africa', 'TJK': 'Europe & Central Asia', 'THA': 'East Asia & Pacific', 'TLS': 'East Asia & Pacific', 'TGO': 'Sub-Saharan Africa', 'TON': 'East Asia & Pacific', 'TUN': 'Middle East & North Africa', 'TKM': 'Europe & Central Asia', 'TUV': 'East Asia & Pacific', 'UGA': 'Sub-Saharan Africa', 'UKR': 'Europe & Central Asia', 'GBR': 'Europe & Central Asia', 'USA': 'North America', 'URY': 'Latin America & Caribbean', 'UZB': 'Europe & Central Asia', 'VUT': 'East Asia & Pacific', 'VNM': 'East Asia & Pacific', 'ZMB': 'Sub-Saharan Africa', 'ZWE': 'Sub-Saharan Africa'}), "get_col_dict_test2": (TEXT_FORMAT_DICT, {'AFG': 61, 'ALB': 93, 'DZA': 93, 'AND': 100, 'AGO': 54, 'ARM': 100, 'AUS': 100, 'AUT': 100, 'AZE': 92, 'BGD': 97, 'BLR': 96, 'BEL': 100, 'BLZ': 97, 'BEN': 65, 'BMU': 100, 'BTN': 96, 'BIH': 96, 'BWA': 88, 'BRA': 98, 'BRN': 100, 'BGR': 100, 'BFA': 50, 'BDI': 60, 'CPV': 85, 'KHM': 68, 'CMR': 64, 'CAN': 100, 'CAF': 42, 'TCD': 44, 'CHL': 100, 'CHN': 92, 'COL': 96, 'CRI': 100, 'CIV': 71, 'CUB': 96, 'CYP': 100, 'CZE': 100, 'DNK': 100, 'DJI': 76, 'DOM': 96, 'ECU': 93, 'SLV': 96, 'EST': 100, 'SWZ': 67, 'ETH': 42, 'FJI': 94, 'FIN': 100, 'FRA': 100, 'GAB': 84, 'GEO': 96, 'DEU': 100, 'GHA': 80, 'GIB': 100, 'GRC': 100, 'GRL': 100, 'GTM': 92, 'GIN': 64, 'GNB': 59, 'GUY': 95, 'HTI': 65, 'HND': 93, 'HUN': 100, 'ISL': 100, 'IND': 88, 'IDN': 89, 'IRQ': 94, 'IRL': 97, 'ISR': 100, 'JAM': 90, 'JOR': 100, 'KAZ': 95, 'KEN': 58, 'KIR': 74, 'LVA': 99, 'LSO': 71, 'LBR': 73, 'LTU': 97, 'LUX': 100, 'MDG': 49, 'MWI': 66, 'MYS': 97, 'MDV': 99, 'MLI': 74, 'MLT': 100, 'MHL': 88, 'MRT': 67, 'MUS': 100, 'MEX': 98, 'MCO': 100, 'MNG': 81, 'MNE': 97, 'MAR': 84, 'MOZ': 51, 'MMR': 74, 'NAM': 83, 'NRU': 100, 'NPL': 88, 'NLD': 100, 'NZL': 100, 'NIC': 81, 'NER': 45, 'NGA': 69, 'MKD': 97, 'NOR': 100, 'OMN': 90, 'PAK': 89, 'PLW': 100, 'PAN': 93, 'PNG': 41, 'PRY': 97, 'PER': 90, 'PHL': 92, 'POL': 100, 'PRT': 100, 'ROU': 100, 'RUS': 97, 'RWA': 57, 'WSM': 91, 'SEN': 79, 'SRB': 93, 'SLE': 58, 'SGP': 100, 'SLB': 69, 'SOM': 49, 'ZAF': 92, 'SSD': 41, 'ESP': 100, 'LKA': 90, 'SDN': 59, 'SUR': 96, 'SWE': 100, 'CHE': 100, 'SYR': 94, 'TJK': 76, 'THA': 100, 'TLS': 75, 'TGO': 64, 'TON': 99, 'TUN': 95, 'TKM': 98, 'TUV': 100, 'UGA': 48, 'UKR': 94, 'GBR': 100, 'USA': 100, 'URY': 100, 'UZB': 98, 'VUT': 90, 'VNM': 93, 'ZMB': 61, 'ZWE': 65}), "get_col_dict_test3": (TEXT_FORMAT_DICT, {'AFG': 38928000, 'ALB': 2878000, 'DZA': 43851000, 'AND': 77000, 'AGO': 32866000, 'ARM': 2963000, 'AUS': 25500000, 'AUT': 9006000, 'AZE': 10139000, 'BGD': 164689000, 'BLR': 9449000, 'BEL': 11590000, 'BLZ': 398000, 'BEN': 12123000, 'BMU': 62000, 'BTN': 772000, 'BIH': 3281000, 'BWA': 2352000, 'BRA': 212559000, 'BRN': 437000, 'BGR': 6948000, 'BFA': 20903000, 'BDI': 11891000, 'CPV': 556000, 'KHM': 16719000, 'CMR': 26546000, 'CAN': 37742000, 'CAF': 4830000, 'TCD': 16426000, 'CHL': 19116000, 'CHN': 1463141000, 'COL': 50883000, 'CRI': 5094000, 'CIV': 26378000, 'CUB': 11327000, 'CYP': 1207000, 'CZE': 10709000, 'DNK': 5792000, 'DJI': 988000, 'DOM': 10848000, 'ECU': 17643000, 'SLV': 6486000, 'EST': 1327000, 'SWZ': 1160000, 'ETH': 114964000, 'FJI': 896000, 'FIN': 5541000, 'FRA': 65274000, 'GAB': 2226000, 'GEO': 3989000, 'DEU': 83784000, 'GHA': 31073000, 'GIB': 34000, 'GRC': 10423000, 'GRL': 57000, 'GTM': 17916000, 'GIN': 13133000, 'GNB': 1968000, 'GUY': 787000, 'HTI': 11403000, 'HND': 9905000, 'HUN': 9660000, 'ISL': 341000, 'IND': 1380004000, 'IDN': 273524000, 'IRQ': 40223000, 'IRL': 4938000, 'ISR': 8656000, 'JAM': 2961000, 'JOR': 10203000, 'KAZ': 18777000, 'KEN': 53771000, 'KIR': 119000, 'LVA': 1886000, 'LSO': 2142000, 'LBR': 5058000, 'LTU': 2722000, 'LUX': 626000, 'MDG': 27691000, 'MWI': 19130000, 'MYS': 32366000, 'MDV': 541000, 'MLI': 20251000, 'MLT': 442000, 'MHL': 59000, 'MRT': 4650000, 'MUS': 1272000, 'MEX': 128933000, 'MCO': 39000, 'MNG': 3278000, 'MNE': 628000, 'MAR': 36911000, 'MOZ': 31255000, 'MMR': 54410000, 'NAM': 2541000, 'NRU': 11000, 'NPL': 29137000, 'NLD': 17135000, 'NZL': 4822000, 'NIC': 6625000, 'NER': 24207000, 'NGA': 206140000, 'MKD': 2083000, 'NOR': 5421000, 'OMN': 5107000, 'PAK': 220892000, 'PLW': 18000, 'PAN': 4315000, 'PNG': 8947000, 'PRY': 7133000, 'PER': 32972000, 'PHL': 109581000, 'POL': 37847000, 'PRT': 10197000, 'ROU': 19238000, 'RUS': 145934000, 'RWA': 12952000, 'WSM': 198000, 'SEN': 16744000, 'SRB': 8737000, 'SLE': 7977000, 'SGP': 5850000, 'SLB': 687000, 'SOM': 15893000, 'ZAF': 59309000, 'SSD': 11194000, 'ESP': 46755000, 'LKA': 21413000, 'SDN': 43849000, 'SUR': 587000, 'SWE': 10099000, 'CHE': 8655000, 'SYR': 17501000, 'TJK': 9538000, 'THA': 69800000, 'TLS': 1318000, 'TGO': 8279000, 'TON': 106000, 'TUN': 11819000, 'TKM': 6031000, 'TUV': 12000, 'UGA': 45741000, 'UKR': 43734000, 'GBR': 67886000, 'USA': 331003000, 'URY': 3474000, 'UZB': 33469000, 'VUT': 307000, 'VNM': 97339000, 'ZMB': 18384000, 'ZWE': 14863000}), "dict_2015_test": (TEXT_FORMAT_DICT, {'AFG': {'country_name': 'Afghanistan', 'region': 'South Asia', 'income_level': 'Low income', 'year': 2015, 'pop': 34414000, 'urban_percent': 25, 'national_alb': 61, 'urban_alb': 87}, 'ALB': {'country_name': 'Albania', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2891000, 'urban_percent': 57, 'national_alb': 93, 'urban_alb': 95}, 'DZA': {'country_name': 'Algeria', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 39728000, 'urban_percent': 71, 'national_alb': 93, 'urban_alb': 95}, 'AND': {'country_name': 'Andorra', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 78000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100}, 'AGO': {'country_name': 'Angola', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 27884000, 'urban_percent': 63, 'national_alb': 54, 'urban_alb': 70}, 'ARM': {'country_name': 'Armenia', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 2926000, 'urban_percent': 63, 'national_alb': 100, 'urban_alb': 100}, 'AUS': {'country_name': 'Australia', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 23932000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100}, 'AUT': {'country_name': 'Austria', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 8679000, 'urban_percent': 58, 'national_alb': 100, 'urban_alb': 100}, 'AZE': {'country_name': 'Azerbaijan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 9623000, 'urban_percent': 55, 'national_alb': 92, 'urban_alb': 100}, 'BGD': {'country_name': 'Bangladesh', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 156256000, 'urban_percent': 34, 'national_alb': 97, 'urban_alb': 98}, 'BLR': {'country_name': 'Belarus', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 9439000, 'urban_percent': 77, 'national_alb': 96, 'urban_alb': 96}, 'BEL': {'country_name': 'Belgium', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 11288000, 'urban_percent': 98, 'national_alb': 100, 'urban_alb': 100}, 'BLZ': {'country_name': 'Belize', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 361000, 'urban_percent': 45, 'national_alb': 97, 'urban_alb': 100}, 'BEN': {'country_name': 'Benin', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 10576000, 'urban_percent': 46, 'national_alb': 65, 'urban_alb': 74}, 'BMU': {'country_name': 'Bermuda', 'region': 'North America', 'income_level': 'High income', 'year': 2015, 'pop': 64000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'BTN': {'country_name': 'Bhutan', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 728000, 'urban_percent': 39, 'national_alb': 96, 'urban_alb': 98}, 'BIH': {'country_name': 'Bosnia and Herzegovina', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 3429000, 'urban_percent': 47, 'national_alb': 96, 'urban_alb': 95}, 'BWA': {'country_name': 'Botswana', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2121000, 'urban_percent': 67, 'national_alb': 88, 'urban_alb': 97}, 'BRA': {'country_name': 'Brazil', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 204472000, 'urban_percent': 86, 'national_alb': 98, 'urban_alb': 100}, 'BRN': {'country_name': 'Brunei Darussalam', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 415000, 'urban_percent': 77, 'national_alb': 100, 'urban_alb': 100}, 'BGR': {'country_name': 'Bulgaria', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 7200000, 'urban_percent': 74, 'national_alb': 100, 'urban_alb': 100}, 'BFA': {'country_name': 'Burkina Faso', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 18111000, 'urban_percent': 28, 'national_alb': 50, 'urban_alb': 80}, 'BDI': {'country_name': 'Burundi', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 10160000, 'urban_percent': 12, 'national_alb': 60, 'urban_alb': 89}, 'CPV': {'country_name': 'Cabo Verde', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 525000, 'urban_percent': 64, 'national_alb': 85, 'urban_alb': 92}, 'KHM': {'country_name': 'Cambodia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 15521000, 'urban_percent': 22, 'national_alb': 68, 'urban_alb': 89}, 'CMR': {'country_name': 'Cameroon', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 23298000, 'urban_percent': 55, 'national_alb': 64, 'urban_alb': 82}, 'CAN': {'country_name': 'Canada', 'region': 'North America', 'income_level': 'High income', 'year': 2015, 'pop': 36027000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100}, 'CAF': {'country_name': 'Central African Republic', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 4493000, 'urban_percent': 40, 'national_alb': 42, 'urban_alb': 58}, 'TCD': {'country_name': 'Chad', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 14111000, 'urban_percent': 23, 'national_alb': 44, 'urban_alb': 75}, 'CHL': {'country_name': 'Chile', 'region': 'Latin America & Caribbean', 'income_level': 'High income', 'year': 2015, 'pop': 17969000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100}, 'CHN': {'country_name': 'China', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 1430405000, 'urban_percent': 56, 'national_alb': 92, 'urban_alb': 98}, 'COL': {'country_name': 'Colombia', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 47521000, 'urban_percent': 80, 'national_alb': 96, 'urban_alb': 100}, 'CRI': {'country_name': 'Costa Rica', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 4848000, 'urban_percent': 77, 'national_alb': 100, 'urban_alb': 100}, 'CIV': {'country_name': "Côte d'Ivoire", 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 23226000, 'urban_percent': 49, 'national_alb': 71, 'urban_alb': 87}, 'CUB': {'country_name': 'Cuba', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 11325000, 'urban_percent': 77, 'national_alb': 96, 'urban_alb': 98}, 'CYP': {'country_name': 'Cyprus', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 1161000, 'urban_percent': 67, 'national_alb': 100, 'urban_alb': 100}, 'CZE': {'country_name': 'Czech Republic', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 10601000, 'urban_percent': 73, 'national_alb': 100, 'urban_alb': 100}, 'DNK': {'country_name': 'Denmark', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 5689000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100}, 'DJI': {'country_name': 'Djibouti', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 914000, 'urban_percent': 77, 'national_alb': 76, 'urban_alb': 84}, 'DOM': {'country_name': 'Dominican Republic', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 10282000, 'urban_percent': 79, 'national_alb': 96, 'urban_alb': 98}, 'ECU': {'country_name': 'Ecuador', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 16212000, 'urban_percent': 63, 'national_alb': 93, 'urban_alb': 100}, 'SLV': {'country_name': 'El Salvador', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 6325000, 'urban_percent': 70, 'national_alb': 96, 'urban_alb': 99}, 'EST': {'country_name': 'Estonia', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 1315000, 'urban_percent': 68, 'national_alb': 100, 'urban_alb': 100}, 'SWZ': {'country_name': 'Eswatini', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 1104000, 'urban_percent': 23, 'national_alb': 67, 'urban_alb': 95}, 'ETH': {'country_name': 'Ethiopia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 100835000, 'urban_percent': 19, 'national_alb': 42, 'urban_alb': 82}, 'FJI': {'country_name': 'Fiji', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 869000, 'urban_percent': 55, 'national_alb': 94, 'urban_alb': 98}, 'FIN': {'country_name': 'Finland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 5481000, 'urban_percent': 85, 'national_alb': 100, 'urban_alb': 100}, 'FRA': {'country_name': 'France', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 64453000, 'urban_percent': 80, 'national_alb': 100, 'urban_alb': 100}, 'GAB': {'country_name': 'Gabon', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 1948000, 'urban_percent': 88, 'national_alb': 84, 'urban_alb': 89}, 'GEO': {'country_name': 'Georgia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 4024000, 'urban_percent': 57, 'national_alb': 96, 'urban_alb': 100}, 'DEU': {'country_name': 'Germany', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 81787000, 'urban_percent': 77, 'national_alb': 100, 'urban_alb': 100}, 'GHA': {'country_name': 'Ghana', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 27849000, 'urban_percent': 54, 'national_alb': 80, 'urban_alb': 91}, 'GIB': {'country_name': 'Gibraltar', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 34000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'GRC': {'country_name': 'Greece', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 10660000, 'urban_percent': 78, 'national_alb': 100, 'urban_alb': 100}, 'GRL': {'country_name': 'Greenland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 56000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100}, 'GTM': {'country_name': 'Guatemala', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 16252000, 'urban_percent': 50, 'national_alb': 92, 'urban_alb': 97}, 'GIN': {'country_name': 'Guinea', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 11432000, 'urban_percent': 35, 'national_alb': 64, 'urban_alb': 85}, 'GNB': {'country_name': 'Guinea-Bissau', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 1737000, 'urban_percent': 42, 'national_alb': 59, 'urban_alb': 73}, 'GUY': {'country_name': 'Guyana', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 767000, 'urban_percent': 26, 'national_alb': 95, 'urban_alb': 100}, 'HTI': {'country_name': 'Haiti', 'region': 'Latin America & Caribbean', 'income_level': 'Low income', 'year': 2015, 'pop': 10696000, 'urban_percent': 52, 'national_alb': 65, 'urban_alb': 85}, 'HND': {'country_name': 'Honduras', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 9113000, 'urban_percent': 55, 'national_alb': 93, 'urban_alb': 99}, 'HUN': {'country_name': 'Hungary', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 9778000, 'urban_percent': 71, 'national_alb': 100, 'urban_alb': 100}, 'ISL': {'country_name': 'Iceland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 330000, 'urban_percent': 94, 'national_alb': 100, 'urban_alb': 100}, 'IND': {'country_name': 'India', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 1310152000, 'urban_percent': 33, 'national_alb': 88, 'urban_alb': 93}, 'IDN': {'country_name': 'Indonesia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 258383000, 'urban_percent': 53, 'national_alb': 89, 'urban_alb': 95}, 'IRQ': {'country_name': 'Iraq', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 35572000, 'urban_percent': 70, 'national_alb': 94, 'urban_alb': 98}, 'IRL': {'country_name': 'Ireland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 4652000, 'urban_percent': 63, 'national_alb': 97, 'urban_alb': 97}, 'ISR': {'country_name': 'Israel', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2015, 'pop': 7978000, 'urban_percent': 92, 'national_alb': 100, 'urban_alb': 100}, 'JAM': {'country_name': 'Jamaica', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2891000, 'urban_percent': 55, 'national_alb': 90, 'urban_alb': 95}, 'JOR': {'country_name': 'Jordan', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 9267000, 'urban_percent': 90, 'national_alb': 100, 'urban_alb': 100}, 'KAZ': {'country_name': 'Kazakhstan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 17572000, 'urban_percent': 57, 'national_alb': 95, 'urban_alb': 98}, 'KEN': {'country_name': 'Kenya', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 47878000, 'urban_percent': 26, 'national_alb': 58, 'urban_alb': 87}, 'KIR': {'country_name': 'Kiribati', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 111000, 'urban_percent': 52, 'national_alb': 74, 'urban_alb': 89}, 'LVA': {'country_name': 'Latvia', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 1998000, 'urban_percent': 68, 'national_alb': 99, 'urban_alb': 99}, 'LSO': {'country_name': 'Lesotho', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 2059000, 'urban_percent': 27, 'national_alb': 71, 'urban_alb': 90}, 'LBR': {'country_name': 'Liberia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 4472000, 'urban_percent': 50, 'national_alb': 73, 'urban_alb': 84}, 'LTU': {'country_name': 'Lithuania', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 2932000, 'urban_percent': 67, 'national_alb': 97, 'urban_alb': 100}, 'LUX': {'country_name': 'Luxembourg', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 567000, 'urban_percent': 90, 'national_alb': 100, 'urban_alb': 100}, 'MDG': {'country_name': 'Madagascar', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 24234000, 'urban_percent': 35, 'national_alb': 49, 'urban_alb': 78}, 'MWI': {'country_name': 'Malawi', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 16745000, 'urban_percent': 16, 'national_alb': 66, 'urban_alb': 86}, 'MYS': {'country_name': 'Malaysia', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 30271000, 'urban_percent': 74, 'national_alb': 97, 'urban_alb': 100}, 'MDV': {'country_name': 'Maldives', 'region': 'South Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 455000, 'urban_percent': 39, 'national_alb': 99, 'urban_alb': 99}, 'MLI': {'country_name': 'Mali', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 17439000, 'urban_percent': 40, 'national_alb': 74, 'urban_alb': 91}, 'MLT': {'country_name': 'Malta', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2015, 'pop': 434000, 'urban_percent': 94, 'national_alb': 100, 'urban_alb': 100}, 'MHL': {'country_name': 'Marshall Islands', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 57000, 'urban_percent': 76, 'national_alb': 88, 'urban_alb': 86}, 'MRT': {'country_name': 'Mauritania', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 4046000, 'urban_percent': 51, 'national_alb': 67, 'urban_alb': 86}, 'MUS': {'country_name': 'Mauritius', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 1259000, 'urban_percent': 41, 'national_alb': 100, 'urban_alb': 100}, 'MEX': {'country_name': 'Mexico', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 121858000, 'urban_percent': 79, 'national_alb': 98, 'urban_alb': 100}, 'MCO': {'country_name': 'Monaco', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 38000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'MNG': {'country_name': 'Mongolia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 2998000, 'urban_percent': 68, 'national_alb': 81, 'urban_alb': 94}, 'MNE': {'country_name': 'Montenegro', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 627000, 'urban_percent': 66, 'national_alb': 97, 'urban_alb': 98}, 'MAR': {'country_name': 'Morocco', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 34664000, 'urban_percent': 61, 'national_alb': 84, 'urban_alb': 96}, 'MOZ': {'country_name': 'Mozambique', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 27042000, 'urban_percent': 34, 'national_alb': 51, 'urban_alb': 80}, 'MMR': {'country_name': 'Myanmar', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 52681000, 'urban_percent': 30, 'national_alb': 74, 'urban_alb': 88}, 'NAM': {'country_name': 'Namibia', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2315000, 'urban_percent': 47, 'national_alb': 83, 'urban_alb': 97}, 'NRU': {'country_name': 'Nauru', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 10000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'NPL': {'country_name': 'Nepal', 'region': 'South Asia', 'income_level': 'Low income', 'year': 2015, 'pop': 27015000, 'urban_percent': 19, 'national_alb': 88, 'urban_alb': 90}, 'NLD': {'country_name': 'Netherlands', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 16938000, 'urban_percent': 90, 'national_alb': 100, 'urban_alb': 100}, 'NZL': {'country_name': 'New Zealand', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 4615000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100}, 'NIC': {'country_name': 'Nicaragua', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 6223000, 'urban_percent': 58, 'national_alb': 81, 'urban_alb': 97}, 'NER': {'country_name': 'Niger', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 20002000, 'urban_percent': 16, 'national_alb': 45, 'urban_alb': 88}, 'NGA': {'country_name': 'Nigeria', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 181137000, 'urban_percent': 48, 'national_alb': 69, 'urban_alb': 85}, 'MKD': {'country_name': 'North Macedonia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2079000, 'urban_percent': 57, 'national_alb': 97, 'urban_alb': 97}, 'NOR': {'country_name': 'Norway', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 5200000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100}, 'OMN': {'country_name': 'Oman', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2015, 'pop': 4267000, 'urban_percent': 81, 'national_alb': 90, 'urban_alb': 94}, 'PAK': {'country_name': 'Pakistan', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 199427000, 'urban_percent': 36, 'national_alb': 89, 'urban_alb': 94}, 'PLW': {'country_name': 'Palau', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 18000, 'urban_percent': 78, 'national_alb': 100, 'urban_alb': 100}, 'PAN': {'country_name': 'Panama', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 3968000, 'urban_percent': 67, 'national_alb': 93, 'urban_alb': 98}, 'PNG': {'country_name': 'Papua New Guinea', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 8108000, 'urban_percent': 13, 'national_alb': 41, 'urban_alb': 85}, 'PRY': {'country_name': 'Paraguay', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 6689000, 'urban_percent': 61, 'national_alb': 97, 'urban_alb': 100}, 'PER': {'country_name': 'Peru', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 30471000, 'urban_percent': 77, 'national_alb': 90, 'urban_alb': 95}, 'PHL': {'country_name': 'Philippines', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 102113000, 'urban_percent': 46, 'national_alb': 92, 'urban_alb': 96}, 'POL': {'country_name': 'Poland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 38034000, 'urban_percent': 60, 'national_alb': 100, 'urban_alb': 100}, 'PRT': {'country_name': 'Portugal', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 10368000, 'urban_percent': 64, 'national_alb': 100, 'urban_alb': 100}, 'ROU': {'country_name': 'Romania', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 19925000, 'urban_percent': 54, 'national_alb': 100, 'urban_alb': 100}, 'RUS': {'country_name': 'Russian Federation', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 144985000, 'urban_percent': 74, 'national_alb': 97, 'urban_alb': 99}, 'RWA': {'country_name': 'Rwanda', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 11369000, 'urban_percent': 17, 'national_alb': 57, 'urban_alb': 80}, 'WSM': {'country_name': 'Samoa', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 194000, 'urban_percent': 19, 'national_alb': 91, 'urban_alb': 91}, 'SEN': {'country_name': 'Senegal', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 14578000, 'urban_percent': 46, 'national_alb': 79, 'urban_alb': 94}, 'SRB': {'country_name': 'Serbia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 8877000, 'urban_percent': 56, 'national_alb': 93, 'urban_alb': 92}, 'SLE': {'country_name': 'Sierra Leone', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 7172000, 'urban_percent': 41, 'national_alb': 58, 'urban_alb': 76}, 'SGP': {'country_name': 'Singapore', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 5592000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'SLB': {'country_name': 'Solomon Islands', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 603000, 'urban_percent': 22, 'national_alb': 69, 'urban_alb': 91}, 'SOM': {'country_name': 'Somalia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 13797000, 'urban_percent': 43, 'national_alb': 49, 'urban_alb': 74}, 'ZAF': {'country_name': 'South Africa', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 55386000, 'urban_percent': 65, 'national_alb': 92, 'urban_alb': 99}, 'SSD': {'country_name': 'South Sudan', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 10716000, 'urban_percent': 19, 'national_alb': 41, 'urban_alb': 61}, 'ESP': {'country_name': 'Spain', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 46672000, 'urban_percent': 80, 'national_alb': 100, 'urban_alb': 100}, 'LKA': {'country_name': 'Sri Lanka', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 20908000, 'urban_percent': 18, 'national_alb': 90, 'urban_alb': 98}, 'SDN': {'country_name': 'Sudan', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 38903000, 'urban_percent': 34, 'national_alb': 59, 'urban_alb': 73}, 'SUR': {'country_name': 'Suriname', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 559000, 'urban_percent': 66, 'national_alb': 96, 'urban_alb': 98}, 'SWE': {'country_name': 'Sweden', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 9765000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100}, 'CHE': {'country_name': 'Switzerland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 8297000, 'urban_percent': 74, 'national_alb': 100, 'urban_alb': 100}, 'SYR': {'country_name': 'Syrian Arab Republic', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 17997000, 'urban_percent': 52, 'national_alb': 94, 'urban_alb': 95}, 'TJK': {'country_name': 'Tajikistan', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 8454000, 'urban_percent': 27, 'national_alb': 76, 'urban_alb': 95}, 'THA': {'country_name': 'Thailand', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 68715000, 'urban_percent': 48, 'national_alb': 100, 'urban_alb': 100}, 'TLS': {'country_name': 'Timor-Leste', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 1196000, 'urban_percent': 29, 'national_alb': 75, 'urban_alb': 90}, 'TGO': {'country_name': 'Togo', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 7323000, 'urban_percent': 40, 'national_alb': 64, 'urban_alb': 88}, 'TON': {'country_name': 'Tonga', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 101000, 'urban_percent': 23, 'national_alb': 99, 'urban_alb': 100}, 'TUN': {'country_name': 'Tunisia', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 11180000, 'urban_percent': 68, 'national_alb': 95, 'urban_alb': 100}, 'TKM': {'country_name': 'Turkmenistan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 5565000, 'urban_percent': 50, 'national_alb': 98, 'urban_alb': 100}, 'TUV': {'country_name': 'Tuvalu', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 11000, 'urban_percent': 60, 'national_alb': 100, 'urban_alb': 100}, 'UGA': {'country_name': 'Uganda', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 38225000, 'urban_percent': 22, 'national_alb': 48, 'urban_alb': 77}, 'UKR': {'country_name': 'Ukraine', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 44922000, 'urban_percent': 69, 'national_alb': 94, 'urban_alb': 92}, 'GBR': {'country_name': 'United Kingdom', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 65860000, 'urban_percent': 83, 'national_alb': 100, 'urban_alb': 100}, 'USA': {'country_name': 'United States of America', 'region': 'North America', 'income_level': 'High income', 'year': 2015, 'pop': 320878000, 'urban_percent': 82, 'national_alb': 100, 'urban_alb': 100}, 'URY': {'country_name': 'Uruguay', 'region': 'Latin America & Caribbean', 'income_level': 'High income', 'year': 2015, 'pop': 3412000, 'urban_percent': 95, 'national_alb': 100, 'urban_alb': 100}, 'UZB': {'country_name': 'Uzbekistan', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 30930000, 'urban_percent': 51, 'national_alb': 98, 'urban_alb': 100}, 'VUT': {'country_name': 'Vanuatu', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 271000, 'urban_percent': 25, 'national_alb': 90, 'urban_alb': 100}, 'VNM': {'country_name': 'Vietnam', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 92677000, 'urban_percent': 34, 'national_alb': 93, 'urban_alb': 98}, 'ZMB': {'country_name': 'Zambia', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 15879000, 'urban_percent': 42, 'national_alb': 61, 'urban_alb': 86}, 'ZWE': {'country_name': 'Zimbabwe', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 13815000, 'urban_percent': 32, 'national_alb': 65, 'urban_alb': 94}}), "dict_2020_test": (TEXT_FORMAT_DICT, {'AFG': {'country_name': 'Afghanistan', 'region': 'South Asia', 'income_level': 'Low income', 'year': 2020, 'pop': 38928000, 'urban_percent': 26, 'national_alb': 75, 'urban_alb': 100}, 'ALB': {'country_name': 'Albania', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2878000, 'urban_percent': 62, 'national_alb': 95, 'urban_alb': 96}, 'DZA': {'country_name': 'Algeria', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 43851000, 'urban_percent': 74, 'national_alb': 94, 'urban_alb': 96}, 'AND': {'country_name': 'Andorra', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 77000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100}, 'AGO': {'country_name': 'Angola', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 32866000, 'urban_percent': 67, 'national_alb': 57, 'urban_alb': 72}, 'ARM': {'country_name': 'Armenia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2963000, 'urban_percent': 63, 'national_alb': 100, 'urban_alb': 100}, 'AUS': {'country_name': 'Australia', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 25500000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100}, 'AUT': {'country_name': 'Austria', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 9006000, 'urban_percent': 59, 'national_alb': 100, 'urban_alb': 100}, 'AZE': {'country_name': 'Azerbaijan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 10139000, 'urban_percent': 56, 'national_alb': 96, 'urban_alb': 100}, 'BGD': {'country_name': 'Bangladesh', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 164689000, 'urban_percent': 38, 'national_alb': 98, 'urban_alb': 97}, 'BLR': {'country_name': 'Belarus', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 9449000, 'urban_percent': 79, 'national_alb': 96, 'urban_alb': 96}, 'BEL': {'country_name': 'Belgium', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 11590000, 'urban_percent': 98, 'national_alb': 100, 'urban_alb': 100}, 'BLZ': {'country_name': 'Belize', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 398000, 'urban_percent': 46, 'national_alb': 98, 'urban_alb': 99}, 'BEN': {'country_name': 'Benin', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 12123000, 'urban_percent': 48, 'national_alb': 65, 'urban_alb': 73}, 'BMU': {'country_name': 'Bermuda', 'region': 'North America', 'income_level': 'High income', 'year': 2020, 'pop': 62000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'BTN': {'country_name': 'Bhutan', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 772000, 'urban_percent': 42, 'national_alb': 97, 'urban_alb': 98}, 'BIH': {'country_name': 'Bosnia and Herzegovina', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 3281000, 'urban_percent': 49, 'national_alb': 96, 'urban_alb': 95}, 'BWA': {'country_name': 'Botswana', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2352000, 'urban_percent': 71, 'national_alb': 92, 'urban_alb': 98}, 'BRA': {'country_name': 'Brazil', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 212559000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100}, 'BRN': {'country_name': 'Brunei Darussalam', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 437000, 'urban_percent': 78, 'national_alb': 100, 'urban_alb': 100}, 'BGR': {'country_name': 'Bulgaria', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 6948000, 'urban_percent': 76, 'national_alb': 100, 'urban_alb': 100}, 'BFA': {'country_name': 'Burkina Faso', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 20903000, 'urban_percent': 31, 'national_alb': 47, 'urban_alb': 80}, 'BDI': {'country_name': 'Burundi', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 11891000, 'urban_percent': 14, 'national_alb': 62, 'urban_alb': 91}, 'CPV': {'country_name': 'Cabo Verde', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 556000, 'urban_percent': 67, 'national_alb': 89, 'urban_alb': 93}, 'KHM': {'country_name': 'Cambodia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 16719000, 'urban_percent': 24, 'national_alb': 71, 'urban_alb': 90}, 'CMR': {'country_name': 'Cameroon', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 26546000, 'urban_percent': 58, 'national_alb': 66, 'urban_alb': 82}, 'CAN': {'country_name': 'Canada', 'region': 'North America', 'income_level': 'High income', 'year': 2020, 'pop': 37742000, 'urban_percent': 82, 'national_alb': 100, 'urban_alb': 100}, 'CAF': {'country_name': 'Central African Republic', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 4830000, 'urban_percent': 42, 'national_alb': 37, 'urban_alb': 50}, 'TCD': {'country_name': 'Chad', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 16426000, 'urban_percent': 24, 'national_alb': 46, 'urban_alb': 74}, 'CHL': {'country_name': 'Chile', 'region': 'Latin America & Caribbean', 'income_level': 'High income', 'year': 2020, 'pop': 19116000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100}, 'CHN': {'country_name': 'China', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 1463141000, 'urban_percent': 62, 'national_alb': 94, 'urban_alb': 97}, 'COL': {'country_name': 'Colombia', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 50883000, 'urban_percent': 81, 'national_alb': 97, 'urban_alb': 100}, 'CRI': {'country_name': 'Costa Rica', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 5094000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100}, 'CIV': {'country_name': "Côte d'Ivoire", 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 26378000, 'urban_percent': 52, 'national_alb': 71, 'urban_alb': 85}, 'CUB': {'country_name': 'Cuba', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 11327000, 'urban_percent': 77, 'national_alb': 97, 'urban_alb': 98}, 'CYP': {'country_name': 'Cyprus', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 1207000, 'urban_percent': 67, 'national_alb': 100, 'urban_alb': 100}, 'CZE': {'country_name': 'Czech Republic', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 10709000, 'urban_percent': 74, 'national_alb': 100, 'urban_alb': 100}, 'DNK': {'country_name': 'Denmark', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 5792000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100}, 'DJI': {'country_name': 'Djibouti', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 988000, 'urban_percent': 78, 'national_alb': 76, 'urban_alb': 84}, 'DOM': {'country_name': 'Dominican Republic', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 10848000, 'urban_percent': 83, 'national_alb': 97, 'urban_alb': 98}, 'ECU': {'country_name': 'Ecuador', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 17643000, 'urban_percent': 64, 'national_alb': 95, 'urban_alb': 100}, 'SLV': {'country_name': 'El Salvador', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 6486000, 'urban_percent': 73, 'national_alb': 98, 'urban_alb': 100}, 'EST': {'country_name': 'Estonia', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 1327000, 'urban_percent': 69, 'national_alb': 100, 'urban_alb': 100}, 'SWZ': {'country_name': 'Eswatini', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 1160000, 'urban_percent': 24, 'national_alb': 71, 'urban_alb': 97}, 'ETH': {'country_name': 'Ethiopia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 114964000, 'urban_percent': 22, 'national_alb': 50, 'urban_alb': 84}, 'FJI': {'country_name': 'Fiji', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 896000, 'urban_percent': 57, 'national_alb': 94, 'urban_alb': 98}, 'FIN': {'country_name': 'Finland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 5541000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100}, 'FRA': {'country_name': 'France', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 65274000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100}, 'GAB': {'country_name': 'Gabon', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2226000, 'urban_percent': 90, 'national_alb': 85, 'urban_alb': 90}, 'GEO': {'country_name': 'Georgia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 3989000, 'urban_percent': 59, 'national_alb': 97, 'urban_alb': 100}, 'DEU': {'country_name': 'Germany', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 83784000, 'urban_percent': 77, 'national_alb': 100, 'urban_alb': 100}, 'GHA': {'country_name': 'Ghana', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 31073000, 'urban_percent': 57, 'national_alb': 86, 'urban_alb': 96}, 'GIB': {'country_name': 'Gibraltar', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 34000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'GRC': {'country_name': 'Greece', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 10423000, 'urban_percent': 80, 'national_alb': 100, 'urban_alb': 100}, 'GRL': {'country_name': 'Greenland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 57000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100}, 'GTM': {'country_name': 'Guatemala', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 17916000, 'urban_percent': 52, 'national_alb': 94, 'urban_alb': 98}, 'GIN': {'country_name': 'Guinea', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 13133000, 'urban_percent': 37, 'national_alb': 64, 'urban_alb': 87}, 'GNB': {'country_name': 'Guinea-Bissau', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 1968000, 'urban_percent': 44, 'national_alb': 59, 'urban_alb': 71}, 'GUY': {'country_name': 'Guyana', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 787000, 'urban_percent': 27, 'national_alb': 96, 'urban_alb': 100}, 'HTI': {'country_name': 'Haiti', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 11403000, 'urban_percent': 57, 'national_alb': 67, 'urban_alb': 85}, 'HND': {'country_name': 'Honduras', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 9905000, 'urban_percent': 58, 'national_alb': 96, 'urban_alb': 100}, 'HUN': {'country_name': 'Hungary', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 9660000, 'urban_percent': 72, 'national_alb': 100, 'urban_alb': 100}, 'ISL': {'country_name': 'Iceland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 341000, 'urban_percent': 94, 'national_alb': 100, 'urban_alb': 100}, 'IND': {'country_name': 'India', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 1380004000, 'urban_percent': 35, 'national_alb': 90, 'urban_alb': 94}, 'IDN': {'country_name': 'Indonesia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 273524000, 'urban_percent': 57, 'national_alb': 92, 'urban_alb': 98}, 'IRQ': {'country_name': 'Iraq', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 40223000, 'urban_percent': 71, 'national_alb': 98, 'urban_alb': 100}, 'IRL': {'country_name': 'Ireland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 4938000, 'urban_percent': 64, 'national_alb': 97, 'urban_alb': 97}, 'ISR': {'country_name': 'Israel', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2020, 'pop': 8656000, 'urban_percent': 93, 'national_alb': 100, 'urban_alb': 100}, 'JAM': {'country_name': 'Jamaica', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2961000, 'urban_percent': 56, 'national_alb': 91, 'urban_alb': 95}, 'JOR': {'country_name': 'Jordan', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 10203000, 'urban_percent': 91, 'national_alb': 99, 'urban_alb': 100}, 'KAZ': {'country_name': 'Kazakhstan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 18777000, 'urban_percent': 58, 'national_alb': 95, 'urban_alb': 98}, 'KEN': {'country_name': 'Kenya', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 53771000, 'urban_percent': 28, 'national_alb': 62, 'urban_alb': 87}, 'KIR': {'country_name': 'Kiribati', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 119000, 'urban_percent': 56, 'national_alb': 78, 'urban_alb': 92}, 'LVA': {'country_name': 'Latvia', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 1886000, 'urban_percent': 68, 'national_alb': 99, 'urban_alb': 99}, 'LSO': {'country_name': 'Lesotho', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 2142000, 'urban_percent': 29, 'national_alb': 72, 'urban_alb': 93}, 'LBR': {'country_name': 'Liberia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 5058000, 'urban_percent': 52, 'national_alb': 75, 'urban_alb': 86}, 'LTU': {'country_name': 'Lithuania', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 2722000, 'urban_percent': 68, 'national_alb': 98, 'urban_alb': 100}, 'LUX': {'country_name': 'Luxembourg', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 626000, 'urban_percent': 91, 'national_alb': 100, 'urban_alb': 100}, 'MDG': {'country_name': 'Madagascar', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 27691000, 'urban_percent': 39, 'national_alb': 53, 'urban_alb': 80}, 'MWI': {'country_name': 'Malawi', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 19130000, 'urban_percent': 17, 'national_alb': 70, 'urban_alb': 86}, 'MYS': {'country_name': 'Malaysia', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 32366000, 'urban_percent': 77, 'national_alb': 97, 'urban_alb': 100}, 'MDV': {'country_name': 'Maldives', 'region': 'South Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 541000, 'urban_percent': 41, 'national_alb': 100, 'urban_alb': 100}, 'MLI': {'country_name': 'Mali', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 20251000, 'urban_percent': 44, 'national_alb': 83, 'urban_alb': 96}, 'MLT': {'country_name': 'Malta', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2020, 'pop': 442000, 'urban_percent': 95, 'national_alb': 100, 'urban_alb': 100}, 'MHL': {'country_name': 'Marshall Islands', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 59000, 'urban_percent': 78, 'national_alb': 89, 'urban_alb': 87}, 'MRT': {'country_name': 'Mauritania', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 4650000, 'urban_percent': 55, 'national_alb': 72, 'urban_alb': 89}, 'MUS': {'country_name': 'Mauritius', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 1272000, 'urban_percent': 41, 'national_alb': 100, 'urban_alb': 100}, 'MEX': {'country_name': 'Mexico', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 128933000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100}, 'MCO': {'country_name': 'Monaco', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 39000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'MNG': {'country_name': 'Mongolia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 3278000, 'urban_percent': 69, 'national_alb': 85, 'urban_alb': 97}, 'MNE': {'country_name': 'Montenegro', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 628000, 'urban_percent': 67, 'national_alb': 99, 'urban_alb': 100}, 'MAR': {'country_name': 'Morocco', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 36911000, 'urban_percent': 64, 'national_alb': 90, 'urban_alb': 98}, 'MOZ': {'country_name': 'Mozambique', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 31255000, 'urban_percent': 37, 'national_alb': 63, 'urban_alb': 88}, 'MMR': {'country_name': 'Myanmar', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 54410000, 'urban_percent': 31, 'national_alb': 84, 'urban_alb': 95}, 'NAM': {'country_name': 'Namibia', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2541000, 'urban_percent': 52, 'national_alb': 84, 'urban_alb': 96}, 'NRU': {'country_name': 'Nauru', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 11000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'NPL': {'country_name': 'Nepal', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 29137000, 'urban_percent': 21, 'national_alb': 90, 'urban_alb': 90}, 'NLD': {'country_name': 'Netherlands', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 17135000, 'urban_percent': 92, 'national_alb': 100, 'urban_alb': 100}, 'NZL': {'country_name': 'New Zealand', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 4822000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100}, 'NIC': {'country_name': 'Nicaragua', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 6625000, 'urban_percent': 59, 'national_alb': 82, 'urban_alb': 97}, 'NER': {'country_name': 'Niger', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 24207000, 'urban_percent': 17, 'national_alb': 47, 'urban_alb': 86}, 'NGA': {'country_name': 'Nigeria', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 206140000, 'urban_percent': 52, 'national_alb': 78, 'urban_alb': 92}, 'MKD': {'country_name': 'North Macedonia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2083000, 'urban_percent': 58, 'national_alb': 98, 'urban_alb': 98}, 'NOR': {'country_name': 'Norway', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 5421000, 'urban_percent': 83, 'national_alb': 100, 'urban_alb': 100}, 'OMN': {'country_name': 'Oman', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2020, 'pop': 5107000, 'urban_percent': 86, 'national_alb': 92, 'urban_alb': 95}, 'PAK': {'country_name': 'Pakistan', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 220892000, 'urban_percent': 37, 'national_alb': 90, 'urban_alb': 93}, 'PLW': {'country_name': 'Palau', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 18000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100}, 'PAN': {'country_name': 'Panama', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 4315000, 'urban_percent': 68, 'national_alb': 94, 'urban_alb': 98}, 'PNG': {'country_name': 'Papua New Guinea', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 8947000, 'urban_percent': 13, 'national_alb': 45, 'urban_alb': 86}, 'PRY': {'country_name': 'Paraguay', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 7133000, 'urban_percent': 62, 'national_alb': 100, 'urban_alb': 100}, 'PER': {'country_name': 'Peru', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 32972000, 'urban_percent': 78, 'national_alb': 93, 'urban_alb': 97}, 'PHL': {'country_name': 'Philippines', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 109581000, 'urban_percent': 47, 'national_alb': 94, 'urban_alb': 97}, 'POL': {'country_name': 'Poland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 37847000, 'urban_percent': 60, 'national_alb': 100, 'urban_alb': 100}, 'PRT': {'country_name': 'Portugal', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 10197000, 'urban_percent': 66, 'national_alb': 100, 'urban_alb': 100}, 'ROU': {'country_name': 'Romania', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 19238000, 'urban_percent': 54, 'national_alb': 100, 'urban_alb': 100}, 'RUS': {'country_name': 'Russian Federation', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 145934000, 'urban_percent': 75, 'national_alb': 97, 'urban_alb': 99}, 'RWA': {'country_name': 'Rwanda', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 12952000, 'urban_percent': 17, 'national_alb': 60, 'urban_alb': 83}, 'WSM': {'country_name': 'Samoa', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 198000, 'urban_percent': 18, 'national_alb': 92, 'urban_alb': 92}, 'SEN': {'country_name': 'Senegal', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 16744000, 'urban_percent': 48, 'national_alb': 85, 'urban_alb': 95}, 'SRB': {'country_name': 'Serbia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 8737000, 'urban_percent': 56, 'national_alb': 95, 'urban_alb': 95}, 'SLE': {'country_name': 'Sierra Leone', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 7977000, 'urban_percent': 43, 'national_alb': 64, 'urban_alb': 78}, 'SGP': {'country_name': 'Singapore', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 5850000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100}, 'SLB': {'country_name': 'Solomon Islands', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 687000, 'urban_percent': 25, 'national_alb': 67, 'urban_alb': 91}, 'SOM': {'country_name': 'Somalia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 15893000, 'urban_percent': 46, 'national_alb': 56, 'urban_alb': 79}, 'ZAF': {'country_name': 'South Africa', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 59309000, 'urban_percent': 67, 'national_alb': 94, 'urban_alb': 100}, 'SSD': {'country_name': 'South Sudan', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 11194000, 'urban_percent': 20, 'national_alb': 41, 'urban_alb': 70}, 'ESP': {'country_name': 'Spain', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 46755000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100}, 'LKA': {'country_name': 'Sri Lanka', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 21413000, 'urban_percent': 19, 'national_alb': 92, 'urban_alb': 100}, 'SDN': {'country_name': 'Sudan', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 43849000, 'urban_percent': 35, 'national_alb': 60, 'urban_alb': 74}, 'SUR': {'country_name': 'Suriname', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 587000, 'urban_percent': 66, 'national_alb': 98, 'urban_alb': 99}, 'SWE': {'country_name': 'Sweden', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 10099000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100}, 'CHE': {'country_name': 'Switzerland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 8655000, 'urban_percent': 74, 'national_alb': 100, 'urban_alb': 100}, 'SYR': {'country_name': 'Syrian Arab Republic', 'region': 'Middle East & North Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 17501000, 'urban_percent': 55, 'national_alb': 94, 'urban_alb': 95}, 'TJK': {'country_name': 'Tajikistan', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 9538000, 'urban_percent': 28, 'national_alb': 82, 'urban_alb': 96}, 'THA': {'country_name': 'Thailand', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 69800000, 'urban_percent': 51, 'national_alb': 100, 'urban_alb': 100}, 'TLS': {'country_name': 'Timor-Leste', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 1318000, 'urban_percent': 31, 'national_alb': 85, 'urban_alb': 96}, 'TGO': {'country_name': 'Togo', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 8279000, 'urban_percent': 43, 'national_alb': 69, 'urban_alb': 91}, 'TON': {'country_name': 'Tonga', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 106000, 'urban_percent': 23, 'national_alb': 99, 'urban_alb': 100}, 'TUN': {'country_name': 'Tunisia', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 11819000, 'urban_percent': 70, 'national_alb': 98, 'urban_alb': 100}, 'TKM': {'country_name': 'Turkmenistan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 6031000, 'urban_percent': 53, 'national_alb': 100, 'urban_alb': 100}, 'TUV': {'country_name': 'Tuvalu', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 12000, 'urban_percent': 64, 'national_alb': 100, 'urban_alb': 100}, 'UGA': {'country_name': 'Uganda', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 45741000, 'urban_percent': 25, 'national_alb': 56, 'urban_alb': 79}, 'UKR': {'country_name': 'Ukraine', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 43734000, 'urban_percent': 69, 'national_alb': 94, 'urban_alb': 92}, 'GBR': {'country_name': 'United Kingdom', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 67886000, 'urban_percent': 84, 'national_alb': 100, 'urban_alb': 100}, 'USA': {'country_name': 'United States of America', 'region': 'North America', 'income_level': 'High income', 'year': 2020, 'pop': 331003000, 'urban_percent': 83, 'national_alb': 100, 'urban_alb': 100}, 'URY': {'country_name': 'Uruguay', 'region': 'Latin America & Caribbean', 'income_level': 'High income', 'year': 2020, 'pop': 3474000, 'urban_percent': 96, 'national_alb': 100, 'urban_alb': 100}, 'UZB': {'country_name': 'Uzbekistan', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 33469000, 'urban_percent': 50, 'national_alb': 98, 'urban_alb': 100}, 'VUT': {'country_name': 'Vanuatu', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 307000, 'urban_percent': 26, 'national_alb': 91, 'urban_alb': 100}, 'VNM': {'country_name': 'Vietnam', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 97339000, 'urban_percent': 37, 'national_alb': 97, 'urban_alb': 100}, 'ZMB': {'country_name': 'Zambia', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 18384000, 'urban_percent': 45, 'national_alb': 65, 'urban_alb': 87}, 'ZWE': {'country_name': 'Zimbabwe', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 14863000, 'urban_percent': 32, 'national_alb': 63, 'urban_alb': 93}}), "10": (TEXT_FORMAT_DICT, {'country_name': 'China', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 1463141000, 'urban_percent': 62, 'national_alb': 94, 'urban_alb': 97}), "11": (TEXT_FORMAT, 88), "12": (TEXT_FORMAT, 60000), "13": (TEXT_FORMAT_DICT, {'Low income': 514021000, 'Upper middle income': 2430080000, 'Lower middle income': 3045857000, 'High income': 871268000}), "14": (TEXT_FORMAT_DICT, {'Low income': 302975040, 'Upper middle income': 2321860110, 'Lower middle income': 2687761440, 'High income': 870638000}), "15": (TEXT_FORMAT_DICT, {'Low income': 59, 'Upper middle income': 96, 'Lower middle income': 88, 'High income': 100}), "dict_2015_rural_alb_test": (TEXT_FORMAT_DICT, {'AFG': {'country_name': 'Afghanistan', 'region': 'South Asia', 'income_level': 'Low income', 'year': 2015, 'pop': 34414000, 'urban_percent': 25, 'national_alb': 61, 'urban_alb': 87, 'rural_alb': 52}, 'ALB': {'country_name': 'Albania', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2891000, 'urban_percent': 57, 'national_alb': 93, 'urban_alb': 95, 'rural_alb': 90}, 'DZA': {'country_name': 'Algeria', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 39728000, 'urban_percent': 71, 'national_alb': 93, 'urban_alb': 95, 'rural_alb': 88}, 'AND': {'country_name': 'Andorra', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 78000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'AGO': {'country_name': 'Angola', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 27884000, 'urban_percent': 63, 'national_alb': 54, 'urban_alb': 70, 'rural_alb': 27}, 'ARM': {'country_name': 'Armenia', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 2926000, 'urban_percent': 63, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'AUS': {'country_name': 'Australia', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 23932000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'AUT': {'country_name': 'Austria', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 8679000, 'urban_percent': 58, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'AZE': {'country_name': 'Azerbaijan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 9623000, 'urban_percent': 55, 'national_alb': 92, 'urban_alb': 100, 'rural_alb': 82}, 'BGD': {'country_name': 'Bangladesh', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 156256000, 'urban_percent': 34, 'national_alb': 97, 'urban_alb': 98, 'rural_alb': 96}, 'BLR': {'country_name': 'Belarus', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 9439000, 'urban_percent': 77, 'national_alb': 96, 'urban_alb': 96, 'rural_alb': 96}, 'BEL': {'country_name': 'Belgium', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 11288000, 'urban_percent': 98, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BLZ': {'country_name': 'Belize', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 361000, 'urban_percent': 45, 'national_alb': 97, 'urban_alb': 100, 'rural_alb': 95}, 'BEN': {'country_name': 'Benin', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 10576000, 'urban_percent': 46, 'national_alb': 65, 'urban_alb': 74, 'rural_alb': 57}, 'BMU': {'country_name': 'Bermuda', 'region': 'North America', 'income_level': 'High income', 'year': 2015, 'pop': 64000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BTN': {'country_name': 'Bhutan', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 728000, 'urban_percent': 39, 'national_alb': 96, 'urban_alb': 98, 'rural_alb': 95}, 'BIH': {'country_name': 'Bosnia and Herzegovina', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 3429000, 'urban_percent': 47, 'national_alb': 96, 'urban_alb': 95, 'rural_alb': 97}, 'BWA': {'country_name': 'Botswana', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2121000, 'urban_percent': 67, 'national_alb': 88, 'urban_alb': 97, 'rural_alb': 70}, 'BRA': {'country_name': 'Brazil', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 204472000, 'urban_percent': 86, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 86}, 'BRN': {'country_name': 'Brunei Darussalam', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 415000, 'urban_percent': 77, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BGR': {'country_name': 'Bulgaria', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 7200000, 'urban_percent': 74, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BFA': {'country_name': 'Burkina Faso', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 18111000, 'urban_percent': 28, 'national_alb': 50, 'urban_alb': 80, 'rural_alb': 38}, 'BDI': {'country_name': 'Burundi', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 10160000, 'urban_percent': 12, 'national_alb': 60, 'urban_alb': 89, 'rural_alb': 56}, 'CPV': {'country_name': 'Cabo Verde', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 525000, 'urban_percent': 64, 'national_alb': 85, 'urban_alb': 92, 'rural_alb': 73}, 'KHM': {'country_name': 'Cambodia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 15521000, 'urban_percent': 22, 'national_alb': 68, 'urban_alb': 89, 'rural_alb': 62}, 'CMR': {'country_name': 'Cameroon', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 23298000, 'urban_percent': 55, 'national_alb': 64, 'urban_alb': 82, 'rural_alb': 42}, 'CAN': {'country_name': 'Canada', 'region': 'North America', 'income_level': 'High income', 'year': 2015, 'pop': 36027000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CAF': {'country_name': 'Central African Republic', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 4493000, 'urban_percent': 40, 'national_alb': 42, 'urban_alb': 58, 'rural_alb': 31}, 'TCD': {'country_name': 'Chad', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 14111000, 'urban_percent': 23, 'national_alb': 44, 'urban_alb': 75, 'rural_alb': 35}, 'CHL': {'country_name': 'Chile', 'region': 'Latin America & Caribbean', 'income_level': 'High income', 'year': 2015, 'pop': 17969000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CHN': {'country_name': 'China', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 1430405000, 'urban_percent': 56, 'national_alb': 92, 'urban_alb': 98, 'rural_alb': 84}, 'COL': {'country_name': 'Colombia', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 47521000, 'urban_percent': 80, 'national_alb': 96, 'urban_alb': 100, 'rural_alb': 80}, 'CRI': {'country_name': 'Costa Rica', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 4848000, 'urban_percent': 77, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CIV': {'country_name': "Côte d'Ivoire", 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 23226000, 'urban_percent': 49, 'national_alb': 71, 'urban_alb': 87, 'rural_alb': 56}, 'CUB': {'country_name': 'Cuba', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 11325000, 'urban_percent': 77, 'national_alb': 96, 'urban_alb': 98, 'rural_alb': 89}, 'CYP': {'country_name': 'Cyprus', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 1161000, 'urban_percent': 67, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CZE': {'country_name': 'Czech Republic', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 10601000, 'urban_percent': 73, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'DNK': {'country_name': 'Denmark', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 5689000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'DJI': {'country_name': 'Djibouti', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 914000, 'urban_percent': 77, 'national_alb': 76, 'urban_alb': 84, 'rural_alb': 49}, 'DOM': {'country_name': 'Dominican Republic', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 10282000, 'urban_percent': 79, 'national_alb': 96, 'urban_alb': 98, 'rural_alb': 88}, 'ECU': {'country_name': 'Ecuador', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 16212000, 'urban_percent': 63, 'national_alb': 93, 'urban_alb': 100, 'rural_alb': 81}, 'SLV': {'country_name': 'El Salvador', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 6325000, 'urban_percent': 70, 'national_alb': 96, 'urban_alb': 99, 'rural_alb': 89}, 'EST': {'country_name': 'Estonia', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 1315000, 'urban_percent': 68, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'SWZ': {'country_name': 'Eswatini', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 1104000, 'urban_percent': 23, 'national_alb': 67, 'urban_alb': 95, 'rural_alb': 59}, 'ETH': {'country_name': 'Ethiopia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 100835000, 'urban_percent': 19, 'national_alb': 42, 'urban_alb': 82, 'rural_alb': 33}, 'FJI': {'country_name': 'Fiji', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 869000, 'urban_percent': 55, 'national_alb': 94, 'urban_alb': 98, 'rural_alb': 89}, 'FIN': {'country_name': 'Finland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 5481000, 'urban_percent': 85, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'FRA': {'country_name': 'France', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 64453000, 'urban_percent': 80, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GAB': {'country_name': 'Gabon', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 1948000, 'urban_percent': 88, 'national_alb': 84, 'urban_alb': 89, 'rural_alb': 47}, 'GEO': {'country_name': 'Georgia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 4024000, 'urban_percent': 57, 'national_alb': 96, 'urban_alb': 100, 'rural_alb': 91}, 'DEU': {'country_name': 'Germany', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 81787000, 'urban_percent': 77, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GHA': {'country_name': 'Ghana', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 27849000, 'urban_percent': 54, 'national_alb': 80, 'urban_alb': 91, 'rural_alb': 67}, 'GIB': {'country_name': 'Gibraltar', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 34000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GRC': {'country_name': 'Greece', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 10660000, 'urban_percent': 78, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GRL': {'country_name': 'Greenland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 56000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GTM': {'country_name': 'Guatemala', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 16252000, 'urban_percent': 50, 'national_alb': 92, 'urban_alb': 97, 'rural_alb': 87}, 'GIN': {'country_name': 'Guinea', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 11432000, 'urban_percent': 35, 'national_alb': 64, 'urban_alb': 85, 'rural_alb': 53}, 'GNB': {'country_name': 'Guinea-Bissau', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 1737000, 'urban_percent': 42, 'national_alb': 59, 'urban_alb': 73, 'rural_alb': 49}, 'GUY': {'country_name': 'Guyana', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 767000, 'urban_percent': 26, 'national_alb': 95, 'urban_alb': 100, 'rural_alb': 93}, 'HTI': {'country_name': 'Haiti', 'region': 'Latin America & Caribbean', 'income_level': 'Low income', 'year': 2015, 'pop': 10696000, 'urban_percent': 52, 'national_alb': 65, 'urban_alb': 85, 'rural_alb': 43}, 'HND': {'country_name': 'Honduras', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 9113000, 'urban_percent': 55, 'national_alb': 93, 'urban_alb': 99, 'rural_alb': 86}, 'HUN': {'country_name': 'Hungary', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 9778000, 'urban_percent': 71, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'ISL': {'country_name': 'Iceland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 330000, 'urban_percent': 94, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'IND': {'country_name': 'India', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 1310152000, 'urban_percent': 33, 'national_alb': 88, 'urban_alb': 93, 'rural_alb': 86}, 'IDN': {'country_name': 'Indonesia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 258383000, 'urban_percent': 53, 'national_alb': 89, 'urban_alb': 95, 'rural_alb': 82}, 'IRQ': {'country_name': 'Iraq', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 35572000, 'urban_percent': 70, 'national_alb': 94, 'urban_alb': 98, 'rural_alb': 85}, 'IRL': {'country_name': 'Ireland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 4652000, 'urban_percent': 63, 'national_alb': 97, 'urban_alb': 97, 'rural_alb': 97}, 'ISR': {'country_name': 'Israel', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2015, 'pop': 7978000, 'urban_percent': 92, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'JAM': {'country_name': 'Jamaica', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2891000, 'urban_percent': 55, 'national_alb': 90, 'urban_alb': 95, 'rural_alb': 84}, 'JOR': {'country_name': 'Jordan', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 9267000, 'urban_percent': 90, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'KAZ': {'country_name': 'Kazakhstan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 17572000, 'urban_percent': 57, 'national_alb': 95, 'urban_alb': 98, 'rural_alb': 91}, 'KEN': {'country_name': 'Kenya', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 47878000, 'urban_percent': 26, 'national_alb': 58, 'urban_alb': 87, 'rural_alb': 48}, 'KIR': {'country_name': 'Kiribati', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 111000, 'urban_percent': 52, 'national_alb': 74, 'urban_alb': 89, 'rural_alb': 58}, 'LVA': {'country_name': 'Latvia', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 1998000, 'urban_percent': 68, 'national_alb': 99, 'urban_alb': 99, 'rural_alb': 99}, 'LSO': {'country_name': 'Lesotho', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 2059000, 'urban_percent': 27, 'national_alb': 71, 'urban_alb': 90, 'rural_alb': 64}, 'LBR': {'country_name': 'Liberia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 4472000, 'urban_percent': 50, 'national_alb': 73, 'urban_alb': 84, 'rural_alb': 62}, 'LTU': {'country_name': 'Lithuania', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 2932000, 'urban_percent': 67, 'national_alb': 97, 'urban_alb': 100, 'rural_alb': 91}, 'LUX': {'country_name': 'Luxembourg', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 567000, 'urban_percent': 90, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MDG': {'country_name': 'Madagascar', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 24234000, 'urban_percent': 35, 'national_alb': 49, 'urban_alb': 78, 'rural_alb': 33}, 'MWI': {'country_name': 'Malawi', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 16745000, 'urban_percent': 16, 'national_alb': 66, 'urban_alb': 86, 'rural_alb': 62}, 'MYS': {'country_name': 'Malaysia', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 30271000, 'urban_percent': 74, 'national_alb': 97, 'urban_alb': 100, 'rural_alb': 88}, 'MDV': {'country_name': 'Maldives', 'region': 'South Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 455000, 'urban_percent': 39, 'national_alb': 99, 'urban_alb': 99, 'rural_alb': 99}, 'MLI': {'country_name': 'Mali', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 17439000, 'urban_percent': 40, 'national_alb': 74, 'urban_alb': 91, 'rural_alb': 63}, 'MLT': {'country_name': 'Malta', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2015, 'pop': 434000, 'urban_percent': 94, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MHL': {'country_name': 'Marshall Islands', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 57000, 'urban_percent': 76, 'national_alb': 88, 'urban_alb': 86, 'rural_alb': 94}, 'MRT': {'country_name': 'Mauritania', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 4046000, 'urban_percent': 51, 'national_alb': 67, 'urban_alb': 86, 'rural_alb': 47}, 'MUS': {'country_name': 'Mauritius', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 1259000, 'urban_percent': 41, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MEX': {'country_name': 'Mexico', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 121858000, 'urban_percent': 79, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 90}, 'MCO': {'country_name': 'Monaco', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 38000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MNG': {'country_name': 'Mongolia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 2998000, 'urban_percent': 68, 'national_alb': 81, 'urban_alb': 94, 'rural_alb': 53}, 'MNE': {'country_name': 'Montenegro', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 627000, 'urban_percent': 66, 'national_alb': 97, 'urban_alb': 98, 'rural_alb': 95}, 'MAR': {'country_name': 'Morocco', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 34664000, 'urban_percent': 61, 'national_alb': 84, 'urban_alb': 96, 'rural_alb': 65}, 'MOZ': {'country_name': 'Mozambique', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 27042000, 'urban_percent': 34, 'national_alb': 51, 'urban_alb': 80, 'rural_alb': 36}, 'MMR': {'country_name': 'Myanmar', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 52681000, 'urban_percent': 30, 'national_alb': 74, 'urban_alb': 88, 'rural_alb': 68}, 'NAM': {'country_name': 'Namibia', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2315000, 'urban_percent': 47, 'national_alb': 83, 'urban_alb': 97, 'rural_alb': 71}, 'NRU': {'country_name': 'Nauru', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 10000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'NPL': {'country_name': 'Nepal', 'region': 'South Asia', 'income_level': 'Low income', 'year': 2015, 'pop': 27015000, 'urban_percent': 19, 'national_alb': 88, 'urban_alb': 90, 'rural_alb': 88}, 'NLD': {'country_name': 'Netherlands', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 16938000, 'urban_percent': 90, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'NZL': {'country_name': 'New Zealand', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 4615000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'NIC': {'country_name': 'Nicaragua', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 6223000, 'urban_percent': 58, 'national_alb': 81, 'urban_alb': 97, 'rural_alb': 59}, 'NER': {'country_name': 'Niger', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 20002000, 'urban_percent': 16, 'national_alb': 45, 'urban_alb': 88, 'rural_alb': 37}, 'NGA': {'country_name': 'Nigeria', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 181137000, 'urban_percent': 48, 'national_alb': 69, 'urban_alb': 85, 'rural_alb': 54}, 'MKD': {'country_name': 'North Macedonia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 2079000, 'urban_percent': 57, 'national_alb': 97, 'urban_alb': 97, 'rural_alb': 97}, 'NOR': {'country_name': 'Norway', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 5200000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'OMN': {'country_name': 'Oman', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2015, 'pop': 4267000, 'urban_percent': 81, 'national_alb': 90, 'urban_alb': 94, 'rural_alb': 73}, 'PAK': {'country_name': 'Pakistan', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 199427000, 'urban_percent': 36, 'national_alb': 89, 'urban_alb': 94, 'rural_alb': 86}, 'PLW': {'country_name': 'Palau', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 18000, 'urban_percent': 78, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'PAN': {'country_name': 'Panama', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 3968000, 'urban_percent': 67, 'national_alb': 93, 'urban_alb': 98, 'rural_alb': 83}, 'PNG': {'country_name': 'Papua New Guinea', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 8108000, 'urban_percent': 13, 'national_alb': 41, 'urban_alb': 85, 'rural_alb': 34}, 'PRY': {'country_name': 'Paraguay', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 6689000, 'urban_percent': 61, 'national_alb': 97, 'urban_alb': 100, 'rural_alb': 92}, 'PER': {'country_name': 'Peru', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 30471000, 'urban_percent': 77, 'national_alb': 90, 'urban_alb': 95, 'rural_alb': 73}, 'PHL': {'country_name': 'Philippines', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 102113000, 'urban_percent': 46, 'national_alb': 92, 'urban_alb': 96, 'rural_alb': 89}, 'POL': {'country_name': 'Poland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 38034000, 'urban_percent': 60, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'PRT': {'country_name': 'Portugal', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 10368000, 'urban_percent': 64, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'ROU': {'country_name': 'Romania', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 19925000, 'urban_percent': 54, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'RUS': {'country_name': 'Russian Federation', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 144985000, 'urban_percent': 74, 'national_alb': 97, 'urban_alb': 99, 'rural_alb': 91}, 'RWA': {'country_name': 'Rwanda', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 11369000, 'urban_percent': 17, 'national_alb': 57, 'urban_alb': 80, 'rural_alb': 52}, 'WSM': {'country_name': 'Samoa', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 194000, 'urban_percent': 19, 'national_alb': 91, 'urban_alb': 91, 'rural_alb': 91}, 'SEN': {'country_name': 'Senegal', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 14578000, 'urban_percent': 46, 'national_alb': 79, 'urban_alb': 94, 'rural_alb': 66}, 'SRB': {'country_name': 'Serbia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 8877000, 'urban_percent': 56, 'national_alb': 93, 'urban_alb': 92, 'rural_alb': 94}, 'SLE': {'country_name': 'Sierra Leone', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 7172000, 'urban_percent': 41, 'national_alb': 58, 'urban_alb': 76, 'rural_alb': 45}, 'SGP': {'country_name': 'Singapore', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2015, 'pop': 5592000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'SLB': {'country_name': 'Solomon Islands', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 603000, 'urban_percent': 22, 'national_alb': 69, 'urban_alb': 91, 'rural_alb': 63}, 'SOM': {'country_name': 'Somalia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 13797000, 'urban_percent': 43, 'national_alb': 49, 'urban_alb': 74, 'rural_alb': 30}, 'ZAF': {'country_name': 'South Africa', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 55386000, 'urban_percent': 65, 'national_alb': 92, 'urban_alb': 99, 'rural_alb': 79}, 'SSD': {'country_name': 'South Sudan', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 10716000, 'urban_percent': 19, 'national_alb': 41, 'urban_alb': 61, 'rural_alb': 36}, 'ESP': {'country_name': 'Spain', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 46672000, 'urban_percent': 80, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'LKA': {'country_name': 'Sri Lanka', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 20908000, 'urban_percent': 18, 'national_alb': 90, 'urban_alb': 98, 'rural_alb': 88}, 'SDN': {'country_name': 'Sudan', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 38903000, 'urban_percent': 34, 'national_alb': 59, 'urban_alb': 73, 'rural_alb': 52}, 'SUR': {'country_name': 'Suriname', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 559000, 'urban_percent': 66, 'national_alb': 96, 'urban_alb': 98, 'rural_alb': 92}, 'SWE': {'country_name': 'Sweden', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 9765000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CHE': {'country_name': 'Switzerland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 8297000, 'urban_percent': 74, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'SYR': {'country_name': 'Syrian Arab Republic', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 17997000, 'urban_percent': 52, 'national_alb': 94, 'urban_alb': 95, 'rural_alb': 93}, 'TJK': {'country_name': 'Tajikistan', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 8454000, 'urban_percent': 27, 'national_alb': 76, 'urban_alb': 95, 'rural_alb': 69}, 'THA': {'country_name': 'Thailand', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 68715000, 'urban_percent': 48, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'TLS': {'country_name': 'Timor-Leste', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 1196000, 'urban_percent': 29, 'national_alb': 75, 'urban_alb': 90, 'rural_alb': 69}, 'TGO': {'country_name': 'Togo', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 7323000, 'urban_percent': 40, 'national_alb': 64, 'urban_alb': 88, 'rural_alb': 48}, 'TON': {'country_name': 'Tonga', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 101000, 'urban_percent': 23, 'national_alb': 99, 'urban_alb': 100, 'rural_alb': 99}, 'TUN': {'country_name': 'Tunisia', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 11180000, 'urban_percent': 68, 'national_alb': 95, 'urban_alb': 100, 'rural_alb': 84}, 'TKM': {'country_name': 'Turkmenistan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 5565000, 'urban_percent': 50, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 96}, 'TUV': {'country_name': 'Tuvalu', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2015, 'pop': 11000, 'urban_percent': 60, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'UGA': {'country_name': 'Uganda', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 38225000, 'urban_percent': 22, 'national_alb': 48, 'urban_alb': 77, 'rural_alb': 40}, 'UKR': {'country_name': 'Ukraine', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 44922000, 'urban_percent': 69, 'national_alb': 94, 'urban_alb': 92, 'rural_alb': 98}, 'GBR': {'country_name': 'United Kingdom', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2015, 'pop': 65860000, 'urban_percent': 83, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'USA': {'country_name': 'United States of America', 'region': 'North America', 'income_level': 'High income', 'year': 2015, 'pop': 320878000, 'urban_percent': 82, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'URY': {'country_name': 'Uruguay', 'region': 'Latin America & Caribbean', 'income_level': 'High income', 'year': 2015, 'pop': 3412000, 'urban_percent': 95, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'UZB': {'country_name': 'Uzbekistan', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 30930000, 'urban_percent': 51, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 96}, 'VUT': {'country_name': 'Vanuatu', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 271000, 'urban_percent': 25, 'national_alb': 90, 'urban_alb': 100, 'rural_alb': 87}, 'VNM': {'country_name': 'Vietnam', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 92677000, 'urban_percent': 34, 'national_alb': 93, 'urban_alb': 98, 'rural_alb': 90}, 'ZMB': {'country_name': 'Zambia', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2015, 'pop': 15879000, 'urban_percent': 42, 'national_alb': 61, 'urban_alb': 86, 'rural_alb': 43}, 'ZWE': {'country_name': 'Zimbabwe', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2015, 'pop': 13815000, 'urban_percent': 32, 'national_alb': 65, 'urban_alb': 94, 'rural_alb': 51}}), "dict_2020_rural_alb_test": (TEXT_FORMAT_DICT, {'AFG': {'country_name': 'Afghanistan', 'region': 'South Asia', 'income_level': 'Low income', 'year': 2020, 'pop': 38928000, 'urban_percent': 26, 'national_alb': 75, 'urban_alb': 100, 'rural_alb': 66}, 'ALB': {'country_name': 'Albania', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2878000, 'urban_percent': 62, 'national_alb': 95, 'urban_alb': 96, 'rural_alb': 93}, 'DZA': {'country_name': 'Algeria', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 43851000, 'urban_percent': 74, 'national_alb': 94, 'urban_alb': 96, 'rural_alb': 88}, 'AND': {'country_name': 'Andorra', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 77000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'AGO': {'country_name': 'Angola', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 32866000, 'urban_percent': 67, 'national_alb': 57, 'urban_alb': 72, 'rural_alb': 27}, 'ARM': {'country_name': 'Armenia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2963000, 'urban_percent': 63, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'AUS': {'country_name': 'Australia', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 25500000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'AUT': {'country_name': 'Austria', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 9006000, 'urban_percent': 59, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'AZE': {'country_name': 'Azerbaijan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 10139000, 'urban_percent': 56, 'national_alb': 96, 'urban_alb': 100, 'rural_alb': 91}, 'BGD': {'country_name': 'Bangladesh', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 164689000, 'urban_percent': 38, 'national_alb': 98, 'urban_alb': 97, 'rural_alb': 99}, 'BLR': {'country_name': 'Belarus', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 9449000, 'urban_percent': 79, 'national_alb': 96, 'urban_alb': 96, 'rural_alb': 96}, 'BEL': {'country_name': 'Belgium', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 11590000, 'urban_percent': 98, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BLZ': {'country_name': 'Belize', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 398000, 'urban_percent': 46, 'national_alb': 98, 'urban_alb': 99, 'rural_alb': 97}, 'BEN': {'country_name': 'Benin', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 12123000, 'urban_percent': 48, 'national_alb': 65, 'urban_alb': 73, 'rural_alb': 58}, 'BMU': {'country_name': 'Bermuda', 'region': 'North America', 'income_level': 'High income', 'year': 2020, 'pop': 62000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BTN': {'country_name': 'Bhutan', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 772000, 'urban_percent': 42, 'national_alb': 97, 'urban_alb': 98, 'rural_alb': 96}, 'BIH': {'country_name': 'Bosnia and Herzegovina', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 3281000, 'urban_percent': 49, 'national_alb': 96, 'urban_alb': 95, 'rural_alb': 97}, 'BWA': {'country_name': 'Botswana', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2352000, 'urban_percent': 71, 'national_alb': 92, 'urban_alb': 98, 'rural_alb': 77}, 'BRA': {'country_name': 'Brazil', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 212559000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BRN': {'country_name': 'Brunei Darussalam', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 437000, 'urban_percent': 78, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BGR': {'country_name': 'Bulgaria', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 6948000, 'urban_percent': 76, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'BFA': {'country_name': 'Burkina Faso', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 20903000, 'urban_percent': 31, 'national_alb': 47, 'urban_alb': 80, 'rural_alb': 32}, 'BDI': {'country_name': 'Burundi', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 11891000, 'urban_percent': 14, 'national_alb': 62, 'urban_alb': 91, 'rural_alb': 57}, 'CPV': {'country_name': 'Cabo Verde', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 556000, 'urban_percent': 67, 'national_alb': 89, 'urban_alb': 93, 'rural_alb': 81}, 'KHM': {'country_name': 'Cambodia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 16719000, 'urban_percent': 24, 'national_alb': 71, 'urban_alb': 90, 'rural_alb': 65}, 'CMR': {'country_name': 'Cameroon', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 26546000, 'urban_percent': 58, 'national_alb': 66, 'urban_alb': 82, 'rural_alb': 44}, 'CAN': {'country_name': 'Canada', 'region': 'North America', 'income_level': 'High income', 'year': 2020, 'pop': 37742000, 'urban_percent': 82, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CAF': {'country_name': 'Central African Republic', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 4830000, 'urban_percent': 42, 'national_alb': 37, 'urban_alb': 50, 'rural_alb': 28}, 'TCD': {'country_name': 'Chad', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 16426000, 'urban_percent': 24, 'national_alb': 46, 'urban_alb': 74, 'rural_alb': 37}, 'CHL': {'country_name': 'Chile', 'region': 'Latin America & Caribbean', 'income_level': 'High income', 'year': 2020, 'pop': 19116000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CHN': {'country_name': 'China', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 1463141000, 'urban_percent': 62, 'national_alb': 94, 'urban_alb': 97, 'rural_alb': 89}, 'COL': {'country_name': 'Colombia', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 50883000, 'urban_percent': 81, 'national_alb': 97, 'urban_alb': 100, 'rural_alb': 84}, 'CRI': {'country_name': 'Costa Rica', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 5094000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CIV': {'country_name': "Côte d'Ivoire", 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 26378000, 'urban_percent': 52, 'national_alb': 71, 'urban_alb': 85, 'rural_alb': 56}, 'CUB': {'country_name': 'Cuba', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 11327000, 'urban_percent': 77, 'national_alb': 97, 'urban_alb': 98, 'rural_alb': 94}, 'CYP': {'country_name': 'Cyprus', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 1207000, 'urban_percent': 67, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CZE': {'country_name': 'Czech Republic', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 10709000, 'urban_percent': 74, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'DNK': {'country_name': 'Denmark', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 5792000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'DJI': {'country_name': 'Djibouti', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 988000, 'urban_percent': 78, 'national_alb': 76, 'urban_alb': 84, 'rural_alb': 48}, 'DOM': {'country_name': 'Dominican Republic', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 10848000, 'urban_percent': 83, 'national_alb': 97, 'urban_alb': 98, 'rural_alb': 92}, 'ECU': {'country_name': 'Ecuador', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 17643000, 'urban_percent': 64, 'national_alb': 95, 'urban_alb': 100, 'rural_alb': 86}, 'SLV': {'country_name': 'El Salvador', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 6486000, 'urban_percent': 73, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 93}, 'EST': {'country_name': 'Estonia', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 1327000, 'urban_percent': 69, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'SWZ': {'country_name': 'Eswatini', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 1160000, 'urban_percent': 24, 'national_alb': 71, 'urban_alb': 97, 'rural_alb': 63}, 'ETH': {'country_name': 'Ethiopia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 114964000, 'urban_percent': 22, 'national_alb': 50, 'urban_alb': 84, 'rural_alb': 40}, 'FJI': {'country_name': 'Fiji', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 896000, 'urban_percent': 57, 'national_alb': 94, 'urban_alb': 98, 'rural_alb': 89}, 'FIN': {'country_name': 'Finland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 5541000, 'urban_percent': 86, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'FRA': {'country_name': 'France', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 65274000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GAB': {'country_name': 'Gabon', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2226000, 'urban_percent': 90, 'national_alb': 85, 'urban_alb': 90, 'rural_alb': 40}, 'GEO': {'country_name': 'Georgia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 3989000, 'urban_percent': 59, 'national_alb': 97, 'urban_alb': 100, 'rural_alb': 93}, 'DEU': {'country_name': 'Germany', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 83784000, 'urban_percent': 77, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GHA': {'country_name': 'Ghana', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 31073000, 'urban_percent': 57, 'national_alb': 86, 'urban_alb': 96, 'rural_alb': 73}, 'GIB': {'country_name': 'Gibraltar', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 34000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GRC': {'country_name': 'Greece', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 10423000, 'urban_percent': 80, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GRL': {'country_name': 'Greenland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 57000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'GTM': {'country_name': 'Guatemala', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 17916000, 'urban_percent': 52, 'national_alb': 94, 'urban_alb': 98, 'rural_alb': 90}, 'GIN': {'country_name': 'Guinea', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 13133000, 'urban_percent': 37, 'national_alb': 64, 'urban_alb': 87, 'rural_alb': 50}, 'GNB': {'country_name': 'Guinea-Bissau', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 1968000, 'urban_percent': 44, 'national_alb': 59, 'urban_alb': 71, 'rural_alb': 50}, 'GUY': {'country_name': 'Guyana', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 787000, 'urban_percent': 27, 'national_alb': 96, 'urban_alb': 100, 'rural_alb': 95}, 'HTI': {'country_name': 'Haiti', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 11403000, 'urban_percent': 57, 'national_alb': 67, 'urban_alb': 85, 'rural_alb': 43}, 'HND': {'country_name': 'Honduras', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 9905000, 'urban_percent': 58, 'national_alb': 96, 'urban_alb': 100, 'rural_alb': 90}, 'HUN': {'country_name': 'Hungary', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 9660000, 'urban_percent': 72, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'ISL': {'country_name': 'Iceland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 341000, 'urban_percent': 94, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'IND': {'country_name': 'India', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 1380004000, 'urban_percent': 35, 'national_alb': 90, 'urban_alb': 94, 'rural_alb': 88}, 'IDN': {'country_name': 'Indonesia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 273524000, 'urban_percent': 57, 'national_alb': 92, 'urban_alb': 98, 'rural_alb': 84}, 'IRQ': {'country_name': 'Iraq', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 40223000, 'urban_percent': 71, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 93}, 'IRL': {'country_name': 'Ireland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 4938000, 'urban_percent': 64, 'national_alb': 97, 'urban_alb': 97, 'rural_alb': 97}, 'ISR': {'country_name': 'Israel', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2020, 'pop': 8656000, 'urban_percent': 93, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'JAM': {'country_name': 'Jamaica', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2961000, 'urban_percent': 56, 'national_alb': 91, 'urban_alb': 95, 'rural_alb': 86}, 'JOR': {'country_name': 'Jordan', 'region': 'Middle East & North Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 10203000, 'urban_percent': 91, 'national_alb': 99, 'urban_alb': 100, 'rural_alb': 89}, 'KAZ': {'country_name': 'Kazakhstan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 18777000, 'urban_percent': 58, 'national_alb': 95, 'urban_alb': 98, 'rural_alb': 91}, 'KEN': {'country_name': 'Kenya', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 53771000, 'urban_percent': 28, 'national_alb': 62, 'urban_alb': 87, 'rural_alb': 52}, 'KIR': {'country_name': 'Kiribati', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 119000, 'urban_percent': 56, 'national_alb': 78, 'urban_alb': 92, 'rural_alb': 60}, 'LVA': {'country_name': 'Latvia', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 1886000, 'urban_percent': 68, 'national_alb': 99, 'urban_alb': 99, 'rural_alb': 99}, 'LSO': {'country_name': 'Lesotho', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 2142000, 'urban_percent': 29, 'national_alb': 72, 'urban_alb': 93, 'rural_alb': 63}, 'LBR': {'country_name': 'Liberia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 5058000, 'urban_percent': 52, 'national_alb': 75, 'urban_alb': 86, 'rural_alb': 63}, 'LTU': {'country_name': 'Lithuania', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 2722000, 'urban_percent': 68, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 94}, 'LUX': {'country_name': 'Luxembourg', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 626000, 'urban_percent': 91, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MDG': {'country_name': 'Madagascar', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 27691000, 'urban_percent': 39, 'national_alb': 53, 'urban_alb': 80, 'rural_alb': 36}, 'MWI': {'country_name': 'Malawi', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 19130000, 'urban_percent': 17, 'national_alb': 70, 'urban_alb': 86, 'rural_alb': 67}, 'MYS': {'country_name': 'Malaysia', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 32366000, 'urban_percent': 77, 'national_alb': 97, 'urban_alb': 100, 'rural_alb': 87}, 'MDV': {'country_name': 'Maldives', 'region': 'South Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 541000, 'urban_percent': 41, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MLI': {'country_name': 'Mali', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 20251000, 'urban_percent': 44, 'national_alb': 83, 'urban_alb': 96, 'rural_alb': 73}, 'MLT': {'country_name': 'Malta', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2020, 'pop': 442000, 'urban_percent': 95, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MHL': {'country_name': 'Marshall Islands', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 59000, 'urban_percent': 78, 'national_alb': 89, 'urban_alb': 87, 'rural_alb': 96}, 'MRT': {'country_name': 'Mauritania', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 4650000, 'urban_percent': 55, 'national_alb': 72, 'urban_alb': 89, 'rural_alb': 51}, 'MUS': {'country_name': 'Mauritius', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 1272000, 'urban_percent': 41, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MEX': {'country_name': 'Mexico', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 128933000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MCO': {'country_name': 'Monaco', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 39000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'MNG': {'country_name': 'Mongolia', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 3278000, 'urban_percent': 69, 'national_alb': 85, 'urban_alb': 97, 'rural_alb': 58}, 'MNE': {'country_name': 'Montenegro', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 628000, 'urban_percent': 67, 'national_alb': 99, 'urban_alb': 100, 'rural_alb': 97}, 'MAR': {'country_name': 'Morocco', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 36911000, 'urban_percent': 64, 'national_alb': 90, 'urban_alb': 98, 'rural_alb': 76}, 'MOZ': {'country_name': 'Mozambique', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 31255000, 'urban_percent': 37, 'national_alb': 63, 'urban_alb': 88, 'rural_alb': 48}, 'MMR': {'country_name': 'Myanmar', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 54410000, 'urban_percent': 31, 'national_alb': 84, 'urban_alb': 95, 'rural_alb': 79}, 'NAM': {'country_name': 'Namibia', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2541000, 'urban_percent': 52, 'national_alb': 84, 'urban_alb': 96, 'rural_alb': 71}, 'NRU': {'country_name': 'Nauru', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 11000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'NPL': {'country_name': 'Nepal', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 29137000, 'urban_percent': 21, 'national_alb': 90, 'urban_alb': 90, 'rural_alb': 90}, 'NLD': {'country_name': 'Netherlands', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 17135000, 'urban_percent': 92, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'NZL': {'country_name': 'New Zealand', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 4822000, 'urban_percent': 87, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'NIC': {'country_name': 'Nicaragua', 'region': 'Latin America & Caribbean', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 6625000, 'urban_percent': 59, 'national_alb': 82, 'urban_alb': 97, 'rural_alb': 60}, 'NER': {'country_name': 'Niger', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 24207000, 'urban_percent': 17, 'national_alb': 47, 'urban_alb': 86, 'rural_alb': 39}, 'NGA': {'country_name': 'Nigeria', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 206140000, 'urban_percent': 52, 'national_alb': 78, 'urban_alb': 92, 'rural_alb': 63}, 'MKD': {'country_name': 'North Macedonia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 2083000, 'urban_percent': 58, 'national_alb': 98, 'urban_alb': 98, 'rural_alb': 98}, 'NOR': {'country_name': 'Norway', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 5421000, 'urban_percent': 83, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'OMN': {'country_name': 'Oman', 'region': 'Middle East & North Africa', 'income_level': 'High income', 'year': 2020, 'pop': 5107000, 'urban_percent': 86, 'national_alb': 92, 'urban_alb': 95, 'rural_alb': 74}, 'PAK': {'country_name': 'Pakistan', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 220892000, 'urban_percent': 37, 'national_alb': 90, 'urban_alb': 93, 'rural_alb': 88}, 'PLW': {'country_name': 'Palau', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 18000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'PAN': {'country_name': 'Panama', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 4315000, 'urban_percent': 68, 'national_alb': 94, 'urban_alb': 98, 'rural_alb': 86}, 'PNG': {'country_name': 'Papua New Guinea', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 8947000, 'urban_percent': 13, 'national_alb': 45, 'urban_alb': 86, 'rural_alb': 39}, 'PRY': {'country_name': 'Paraguay', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 7133000, 'urban_percent': 62, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'PER': {'country_name': 'Peru', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 32972000, 'urban_percent': 78, 'national_alb': 93, 'urban_alb': 97, 'rural_alb': 79}, 'PHL': {'country_name': 'Philippines', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 109581000, 'urban_percent': 47, 'national_alb': 94, 'urban_alb': 97, 'rural_alb': 91}, 'POL': {'country_name': 'Poland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 37847000, 'urban_percent': 60, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'PRT': {'country_name': 'Portugal', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 10197000, 'urban_percent': 66, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'ROU': {'country_name': 'Romania', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 19238000, 'urban_percent': 54, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'RUS': {'country_name': 'Russian Federation', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 145934000, 'urban_percent': 75, 'national_alb': 97, 'urban_alb': 99, 'rural_alb': 91}, 'RWA': {'country_name': 'Rwanda', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 12952000, 'urban_percent': 17, 'national_alb': 60, 'urban_alb': 83, 'rural_alb': 55}, 'WSM': {'country_name': 'Samoa', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 198000, 'urban_percent': 18, 'national_alb': 92, 'urban_alb': 92, 'rural_alb': 92}, 'SEN': {'country_name': 'Senegal', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 16744000, 'urban_percent': 48, 'national_alb': 85, 'urban_alb': 95, 'rural_alb': 76}, 'SRB': {'country_name': 'Serbia', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 8737000, 'urban_percent': 56, 'national_alb': 95, 'urban_alb': 95, 'rural_alb': 95}, 'SLE': {'country_name': 'Sierra Leone', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 7977000, 'urban_percent': 43, 'national_alb': 64, 'urban_alb': 78, 'rural_alb': 53}, 'SGP': {'country_name': 'Singapore', 'region': 'East Asia & Pacific', 'income_level': 'High income', 'year': 2020, 'pop': 5850000, 'urban_percent': 100, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'SLB': {'country_name': 'Solomon Islands', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 687000, 'urban_percent': 25, 'national_alb': 67, 'urban_alb': 91, 'rural_alb': 59}, 'SOM': {'country_name': 'Somalia', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 15893000, 'urban_percent': 46, 'national_alb': 56, 'urban_alb': 79, 'rural_alb': 36}, 'ZAF': {'country_name': 'South Africa', 'region': 'Sub-Saharan Africa', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 59309000, 'urban_percent': 67, 'national_alb': 94, 'urban_alb': 100, 'rural_alb': 82}, 'SSD': {'country_name': 'South Sudan', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 11194000, 'urban_percent': 20, 'national_alb': 41, 'urban_alb': 70, 'rural_alb': 34}, 'ESP': {'country_name': 'Spain', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 46755000, 'urban_percent': 81, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'LKA': {'country_name': 'Sri Lanka', 'region': 'South Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 21413000, 'urban_percent': 19, 'national_alb': 92, 'urban_alb': 100, 'rural_alb': 90}, 'SDN': {'country_name': 'Sudan', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 43849000, 'urban_percent': 35, 'national_alb': 60, 'urban_alb': 74, 'rural_alb': 52}, 'SUR': {'country_name': 'Suriname', 'region': 'Latin America & Caribbean', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 587000, 'urban_percent': 66, 'national_alb': 98, 'urban_alb': 99, 'rural_alb': 96}, 'SWE': {'country_name': 'Sweden', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 10099000, 'urban_percent': 88, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'CHE': {'country_name': 'Switzerland', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 8655000, 'urban_percent': 74, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'SYR': {'country_name': 'Syrian Arab Republic', 'region': 'Middle East & North Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 17501000, 'urban_percent': 55, 'national_alb': 94, 'urban_alb': 95, 'rural_alb': 93}, 'TJK': {'country_name': 'Tajikistan', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 9538000, 'urban_percent': 28, 'national_alb': 82, 'urban_alb': 96, 'rural_alb': 77}, 'THA': {'country_name': 'Thailand', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 69800000, 'urban_percent': 51, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'TLS': {'country_name': 'Timor-Leste', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 1318000, 'urban_percent': 31, 'national_alb': 85, 'urban_alb': 96, 'rural_alb': 80}, 'TGO': {'country_name': 'Togo', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 8279000, 'urban_percent': 43, 'national_alb': 69, 'urban_alb': 91, 'rural_alb': 52}, 'TON': {'country_name': 'Tonga', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 106000, 'urban_percent': 23, 'national_alb': 99, 'urban_alb': 100, 'rural_alb': 99}, 'TUN': {'country_name': 'Tunisia', 'region': 'Middle East & North Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 11819000, 'urban_percent': 70, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 93}, 'TKM': {'country_name': 'Turkmenistan', 'region': 'Europe & Central Asia', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 6031000, 'urban_percent': 53, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'TUV': {'country_name': 'Tuvalu', 'region': 'East Asia & Pacific', 'income_level': 'Upper middle income', 'year': 2020, 'pop': 12000, 'urban_percent': 64, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'UGA': {'country_name': 'Uganda', 'region': 'Sub-Saharan Africa', 'income_level': 'Low income', 'year': 2020, 'pop': 45741000, 'urban_percent': 25, 'national_alb': 56, 'urban_alb': 79, 'rural_alb': 48}, 'UKR': {'country_name': 'Ukraine', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 43734000, 'urban_percent': 69, 'national_alb': 94, 'urban_alb': 92, 'rural_alb': 98}, 'GBR': {'country_name': 'United Kingdom', 'region': 'Europe & Central Asia', 'income_level': 'High income', 'year': 2020, 'pop': 67886000, 'urban_percent': 84, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'USA': {'country_name': 'United States of America', 'region': 'North America', 'income_level': 'High income', 'year': 2020, 'pop': 331003000, 'urban_percent': 83, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'URY': {'country_name': 'Uruguay', 'region': 'Latin America & Caribbean', 'income_level': 'High income', 'year': 2020, 'pop': 3474000, 'urban_percent': 96, 'national_alb': 100, 'urban_alb': 100, 'rural_alb': 100}, 'UZB': {'country_name': 'Uzbekistan', 'region': 'Europe & Central Asia', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 33469000, 'urban_percent': 50, 'national_alb': 98, 'urban_alb': 100, 'rural_alb': 96}, 'VUT': {'country_name': 'Vanuatu', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 307000, 'urban_percent': 26, 'national_alb': 91, 'urban_alb': 100, 'rural_alb': 88}, 'VNM': {'country_name': 'Vietnam', 'region': 'East Asia & Pacific', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 97339000, 'urban_percent': 37, 'national_alb': 97, 'urban_alb': 100, 'rural_alb': 95}, 'ZMB': {'country_name': 'Zambia', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 18384000, 'urban_percent': 45, 'national_alb': 65, 'urban_alb': 87, 'rural_alb': 47}, 'ZWE': {'country_name': 'Zimbabwe', 'region': 'Sub-Saharan Africa', 'income_level': 'Lower middle income', 'year': 2020, 'pop': 14863000, 'urban_percent': 32, 'national_alb': 63, 'urban_alb': 93, 'rural_alb': 49}}), "16": (TEXT_FORMAT, 49), "rural_non_alb_bin_2015": (TEXT_FORMAT_DICT, {0: ['Andorra', 'Armenia', 'Australia', 'Austria', 'Bangladesh', 'Belarus', 'Belgium', 'Belize', 'Bermuda', 'Bhutan', 'Bosnia and Herzegovina', 'Brunei Darussalam', 'Bulgaria', 'Canada', 'Chile', 'Costa Rica', 'Cyprus', 'Czech Republic', 'Denmark', 'Estonia', 'Finland', 'France', 'Georgia', 'Germany', 'Gibraltar', 'Greece', 'Greenland', 'Guyana', 'Hungary', 'Iceland', 'Ireland', 'Israel', 'Jordan', 'Kazakhstan', 'Latvia', 'Lithuania', 'Luxembourg', 'Maldives', 'Malta', 'Marshall Islands', 'Mauritius', 'Monaco', 'Montenegro', 'Nauru', 'Netherlands', 'New Zealand', 'North Macedonia', 'Norway', 'Palau', 'Paraguay', 'Poland', 'Portugal', 'Romania', 'Russian Federation', 'Samoa', 'Serbia', 'Singapore', 'Spain', 'Suriname', 'Sweden', 'Switzerland', 'Syrian Arab Republic', 'Thailand', 'Tonga', 'Turkmenistan', 'Tuvalu', 'Ukraine', 'United Kingdom', 'United States of America', 'Uruguay', 'Uzbekistan'], 10: ['Albania', 'Algeria', 'Azerbaijan', 'Brazil', 'China', 'Cuba', 'Dominican Republic', 'Ecuador', 'El Salvador', 'Fiji', 'Guatemala', 'Honduras', 'India', 'Indonesia', 'Iraq', 'Jamaica', 'Malaysia', 'Mexico', 'Nepal', 'Pakistan', 'Panama', 'Philippines', 'Sri Lanka', 'Tunisia', 'Vanuatu', 'Vietnam'], 20: ['Cabo Verde', 'Colombia', 'Namibia', 'Oman', 'Peru', 'South Africa'], 30: ['Botswana', 'Cambodia', 'Ghana', 'Lesotho', 'Liberia', 'Malawi', 'Mali', 'Morocco', 'Myanmar', 'Senegal', 'Solomon Islands', 'Tajikistan', 'Timor-Leste'], 40: ['Afghanistan', 'Benin', 'Burundi', "Côte d'Ivoire", 'Eswatini', 'Guinea', 'Kiribati', 'Mongolia', 'Nicaragua', 'Nigeria', 'Rwanda', 'Sudan', 'Zimbabwe'], 50: ['Cameroon', 'Djibouti', 'Gabon', 'Guinea-Bissau', 'Haiti', 'Kenya', 'Mauritania', 'Sierra Leone', 'Togo', 'Zambia'], 60: ['Burkina Faso', 'Central African Republic', 'Chad', 'Ethiopia', 'Madagascar', 'Mozambique', 'Niger', 'Papua New Guinea', 'South Sudan', 'Uganda'], 70: ['Angola', 'Somalia'], 80: [], 90: [], 100: []}), "rural_non_alb_bin_2020": (TEXT_FORMAT_DICT, {0: ['Albania', 'Andorra', 'Armenia', 'Australia', 'Austria', 'Azerbaijan', 'Bangladesh', 'Belarus', 'Belgium', 'Belize', 'Bermuda', 'Bhutan', 'Bosnia and Herzegovina', 'Brazil', 'Brunei Darussalam', 'Bulgaria', 'Canada', 'Chile', 'Costa Rica', 'Cuba', 'Cyprus', 'Czech Republic', 'Denmark', 'Dominican Republic', 'El Salvador', 'Estonia', 'Finland', 'France', 'Georgia', 'Germany', 'Gibraltar', 'Greece', 'Greenland', 'Guyana', 'Hungary', 'Iceland', 'Iraq', 'Ireland', 'Israel', 'Kazakhstan', 'Latvia', 'Lithuania', 'Luxembourg', 'Maldives', 'Malta', 'Marshall Islands', 'Mauritius', 'Mexico', 'Monaco', 'Montenegro', 'Nauru', 'Netherlands', 'New Zealand', 'North Macedonia', 'Norway', 'Palau', 'Paraguay', 'Philippines', 'Poland', 'Portugal', 'Romania', 'Russian Federation', 'Samoa', 'Serbia', 'Singapore', 'Spain', 'Suriname', 'Sweden', 'Switzerland', 'Syrian Arab Republic', 'Thailand', 'Tonga', 'Tunisia', 'Turkmenistan', 'Tuvalu', 'Ukraine', 'United Kingdom', 'United States of America', 'Uruguay', 'Uzbekistan', 'Vietnam'], 10: ['Algeria', 'Cabo Verde', 'China', 'Colombia', 'Ecuador', 'Fiji', 'Guatemala', 'Honduras', 'India', 'Indonesia', 'Jamaica', 'Jordan', 'Malaysia', 'Nepal', 'Pakistan', 'Panama', 'South Africa', 'Sri Lanka', 'Vanuatu'], 20: ['Botswana', 'Ghana', 'Mali', 'Morocco', 'Myanmar', 'Namibia', 'Oman', 'Peru', 'Senegal', 'Tajikistan', 'Timor-Leste'], 30: ['Afghanistan', 'Cambodia', 'Eswatini', 'Lesotho', 'Liberia', 'Malawi', 'Nigeria'], 40: ['Benin', 'Burundi', "Côte d'Ivoire", 'Kenya', 'Kiribati', 'Mauritania', 'Mongolia', 'Nicaragua', 'Rwanda', 'Sierra Leone', 'Solomon Islands', 'Sudan', 'Togo'], 50: ['Cameroon', 'Djibouti', 'Guinea', 'Guinea-Bissau', 'Haiti', 'Mozambique', 'Uganda', 'Zambia', 'Zimbabwe'], 60: ['Burkina Faso', 'Chad', 'Ethiopia', 'Gabon', 'Madagascar', 'Niger', 'Papua New Guinea', 'Somalia', 'South Sudan'], 70: ['Angola', 'Central African Republic'], 80: [], 90: [], 100: []}), "17": (TEXT_FORMAT_UNORDERED_LIST, ['Cabo Verde', 'Colombia', 'Namibia', 'Oman', 'Peru', 'South Africa']), "18": (TEXT_FORMAT_UNORDERED_LIST, ['Angola', 'Central African Republic']), "19": (TEXT_FORMAT_UNORDERED_LIST, ['Jordan', 'Solomon Islands', 'Guinea', 'Zimbabwe', 'Gabon', 'Central African Republic']), "20": (TEXT_FORMAT_UNORDERED_LIST, ['Albania', 'Azerbaijan', 'Brazil', 'Cuba', 'Dominican Republic', 'El Salvador', 'Iraq', 'Mexico', 'Philippines', 'Tunisia', 'Vietnam', 'Cabo Verde', 'Colombia', 'South Africa', 'Botswana', 'Ghana', 'Mali', 'Morocco', 'Myanmar', 'Senegal', 'Tajikistan', 'Timor-Leste', 'Afghanistan', 'Eswatini', 'Nigeria', 'Kenya', 'Mauritania', 'Sierra Leone', 'Togo', 'Mozambique', 'Uganda', 'Somalia'])} special_ordered_json = {} def compare_outputs(expected, actual, format, expected_ordering=None): try: if format == TEXT_FORMAT: return simple_compare(expected, actual) elif format in [TEXT_FORMAT_ORDERED_LIST, TEXT_FORMAT_LIST_DICTS_ORDERED]: return list_compare_ordered(expected, actual) elif format == TEXT_FORMAT_UNORDERED_LIST: return list_compare_unordered(expected, actual) elif format == TEXT_FORMAT_SPECIAL_ORDERED_LIST: return list_compare_special(expected, actual, special_ordered_json[qnum[1:]]) elif format == TEXT_FORMAT_DICT: return dict_compare(expected, actual) else: if expected != actual: return "expected %s but found %s " % (repr(expected), repr(actual)) except: if expected != actual: return "expected %s" % (repr(expected)) def check_cell_text(qnum, actual): format, expected = expected_json[qnum[1:]] if format == TEXT_FORMAT_SPECIAL_ORDERED_LIST: expected_ordering = special_ordered_json[qnum[1:]] return compare_outputs(expected, actual, format, expected_ordering) else: return compare_outputs(expected, actual, format) def simple_compare(expected, actual, complete_msg=True): msg = PASS if type(expected) == type: if expected != actual: if type(actual) == type: msg = "expected %s but found %s" % (expected.__name__, actual.__name__) else: msg = "expected %s but found %s" % (expected.__name__, repr(actual)) elif type(expected) != type(actual) and not (type(expected) in [float, int] and type(actual) in [float, int]): msg = "expected to find type %s but found type %s" % (type(expected).__name__, type(actual).__name__) elif type(expected) == float: if not math.isclose(actual, expected, rel_tol=REL_TOL, abs_tol=ABS_TOL): msg = "expected %s" % (repr(expected)) if complete_msg: msg = msg + " but found %s" % (repr(actual)) else: if expected != actual: msg = "expected %s" % (repr(expected)) if complete_msg: msg = msg + " but found %s" % (repr(actual)) return msg def list_compare_ordered(expected, actual, obj="list"): msg = PASS if type(expected) != type(actual): msg = "expected to find type %s but found type %s" % (type(expected).__name__, type(actual).__name__) return msg for i in range(len(expected)): if i >= len(actual): msg = "expected missing %s in %s" % (repr(expected[i]), obj) break if type(expected[i]) in [int, float, bool, str]: val = simple_compare(expected[i], actual[i]) elif type(expected[i]) in [list]: val = list_compare_ordered(expected[i], actual[i], "sub" + obj) elif type(expected[i]) in [dict]: val = dict_compare(expected[i], actual[i]) elif type(expected[i]).__name__ == obfuscate1(): val = simple_compare(expected[i], actual[i]) if val != PASS: msg = "at index %d of the %s, " % (i, obj) + val break if len(actual) > len(expected) and msg == PASS: msg = "found unexpected %s in %s" % (repr(actual[len(expected)]), obj) if len(expected) != len(actual): msg = msg + " (found %d entries in %s, but expected %d)" % (len(actual), obj, len(expected)) if len(expected) > 0 and type(expected[0]) in [int, float, bool, str]: if msg != PASS and list_compare_unordered(expected, actual, obj) == PASS: try: msg = msg + " (list may not be ordered as required)" except: pass return msg def list_compare_helper(larger, smaller): msg = PASS j = 0 for i in range(len(larger)): if i == len(smaller): msg = "expected %s" % (repr(larger[i])) break found = False while not found: if j == len(smaller): val = simple_compare(larger[i], smaller[j - 1], False) break val = simple_compare(larger[i], smaller[j], False) j += 1 if val == PASS: found = True break if not found: msg = val break return msg def list_compare_unordered(expected, actual, obj="list"): msg = PASS if type(expected) != type(actual): msg = "expected to find type %s but found type %s" % (type(expected).__name__, type(actual).__name__) return msg try: sort_expected = sorted(expected) sort_actual = sorted(actual) except: msg = "unexpected datatype found in %s; expected entries of type %s" % (obj, obj, type(expected[0]).__name__) return msg if len(actual) == 0 and len(expected) > 0: msg = "in the %s, missing" % (obj) + expected[0] elif len(actual) > 0 and len(expected) > 0: val = simple_compare(sort_expected[0], sort_actual[0]) if val.startswith("expected to find type"): msg = "in the %s, " % (obj) + simple_compare(sort_expected[0], sort_actual[0]) else: if len(expected) > len(actual): msg = "in the %s, missing " % (obj) + list_compare_helper(sort_expected, sort_actual) elif len(expected) < len(actual): msg = "in the %s, found un" % (obj) + list_compare_helper(sort_actual, sort_expected) if len(expected) != len(actual): msg = msg + " (found %d entries in %s, but expected %d)" % (len(actual), obj, len(expected)) return msg else: val = list_compare_helper(sort_expected, sort_actual) if val != PASS: msg = "in the %s, missing " % (obj) + val + ", but found un" + list_compare_helper(sort_actual, sort_expected) return msg def list_compare_special_init(expected, special_order): real_expected = [] for i in range(len(expected)): if real_expected == [] or special_order[i-1] != special_order[i]: real_expected.append([]) real_expected[-1].append(expected[i]) return real_expected def list_compare_special(expected, actual, special_order): expected = list_compare_special_init(expected, special_order) msg = PASS expected_list = [] for expected_item in expected: expected_list.extend(expected_item) val = list_compare_unordered(expected_list, actual) if val != PASS: msg = val else: i = 0 for expected_item in expected: j = len(expected_item) actual_item = actual[i: i + j] val = list_compare_unordered(expected_item, actual_item) if val != PASS: if j == 1: msg = "at index %d " % (i) + val else: msg = "between indices %d and %d " % (i, i + j - 1) + val msg = msg + " (list may not be ordered as required)" break i += j return msg def dict_compare(expected, actual, obj="dict"): msg = PASS if type(expected) != type(actual): msg = "expected to find type %s but found type %s" % (type(expected).__name__, type(actual).__name__) return msg try: expected_keys = sorted(list(expected.keys())) actual_keys = sorted(list(actual.keys())) except: msg = "unexpected datatype found in keys of dict; expect a dict with keys of type %s" % ( type(expected_keys[0]).__name__) return msg val = list_compare_unordered(expected_keys, actual_keys, "dict") if val != PASS: msg = "bad keys in %s: " % (obj) + val if msg == PASS: for key in expected: if expected[key] == None or type(expected[key]) in [int, float, bool, str]: val = simple_compare(expected[key], actual[key]) elif type(expected[key]) in [list]: val = list_compare_ordered(expected[key], actual[key], "value") elif type(expected[key]) in [dict]: val = dict_compare(expected[key], actual[key], "sub" + obj) if val != PASS: msg = "incorrect val for key %s in %s: " % (repr(key), obj) + val return msg def check(qnum, actual): msg = check_cell_text(qnum, actual) if msg == PASS: return True print("<b style='color: red;'>ERROR:</b> " + msg) def check_file_size(path): size = os.path.getsize(path) assert size < MAX_FILE_SIZE * 10**3, "Your file is too big to be processed by Gradescope; please delete unnecessary output cells so your file size is < %s KB" % MAX_FILE_SIZE