├── .gitignore ├── CH01 └── hello.py ├── CH02 ├── exitExample.py ├── swordfish.py └── vampire.py ├── CH03 ├── collatzSequence.py ├── guessTheNumber.py ├── helloFunc.py ├── magicBall.py ├── sameName.py └── zeroDivide.py ├── CH04 ├── allMyCats.py ├── characterPictureGrid.py ├── commaCode.py ├── magic8Ball.py ├── myPets.py └── passingReference.py ├── CH05 ├── birthdays.py ├── characterCount.py ├── inventory.py ├── itemsBought.py ├── prettyCharacterCount.py └── ticTacToe.py ├── CH06 ├── bulletPointAdder.py ├── catNapping.py ├── picnicTable.py ├── printTable.py └── pw.py ├── CH07 ├── isPhoneNumber.py └── phoneAndEmail.py ├── CH08 ├── mcb.pyw └── randomQuizGenerator.py ├── CH09 ├── backupToZip.py └── renameDates.py ├── CH10 ├── boxPrint.py ├── buggyAddingProgram.py ├── coinFlip.py ├── errorExample.py ├── exceptionHandling.py └── factorialLog.py ├── CH11 ├── RomeoAndJuliet.txt ├── downloadXkcd.py ├── lucky.py ├── mapIt.py └── wbScraper.py ├── CH12 ├── census2010.py ├── censuspopdata.xlsx ├── example.xlsx ├── readCensusExcel.py ├── updateProduce.py └── updatedProduceSales.xlsx ├── CH13 ├── allminutes.pdf ├── combinePdfs.py ├── meetingminutes.pdf ├── meetingminutes2.pdf └── readPDF.py ├── CH14 ├── example.csv ├── headerRemoved │ ├── example.csv │ └── output.csv ├── output.csv ├── quickWeather.py └── removeCsvHeader.py ├── CH15 ├── alarm.wav ├── calcProd.py ├── countdown.py ├── multidownloadXkcd.py ├── stopwatch.py └── threadDemo.py ├── INDEX.md ├── LEARNINGLOG.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # temp 9 | *.py~ 10 | 11 | # Distribution / packaging 12 | .Python 13 | env/ 14 | build/ 15 | develop-eggs/ 16 | dist/ 17 | downloads/ 18 | eggs/ 19 | .eggs/ 20 | lib/ 21 | lib64/ 22 | parts/ 23 | sdist/ 24 | var/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .coverage 43 | .coverage.* 44 | .cache 45 | nosetests.xml 46 | coverage.xml 47 | *,cover 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | 56 | # Sphinx documentation 57 | docs/_build/ 58 | 59 | # PyBuilder 60 | target/ 61 | 62 | # Temp 63 | *~ 64 | -------------------------------------------------------------------------------- /CH01/hello.py: -------------------------------------------------------------------------------- 1 | # This program says hello and asks for my name. 2 | 3 | print('Hello earth!') 4 | print('What is your name?') # ask for their name 5 | myName = input() 6 | print('It is good to meet you, ' + myName) 7 | print('The length of your name is:') 8 | print(len(myName)) 9 | print('What is your age?') # ask for their age 10 | myAge = input() 11 | print('You will be ' + str(int(myAge) + 1) + ' in a year.') -------------------------------------------------------------------------------- /CH02/exitExample.py: -------------------------------------------------------------------------------- 1 | import sys 2 | while True: 3 | print('Type exit to exit.') 4 | response = input() 5 | if response == 'exit': 6 | sys.exit() 7 | print('You typed ' + response + '.') -------------------------------------------------------------------------------- /CH02/swordfish.py: -------------------------------------------------------------------------------- 1 | while True: 2 | print('Who are you?') 3 | name = input() 4 | if name != 'Joe': 5 | continue 6 | print('Hello, Joe. What is the password? (It is a fish.)') 7 | password = input() 8 | if password == 'swordfish': 9 | break 10 | print('Access granted.') -------------------------------------------------------------------------------- /CH02/vampire.py: -------------------------------------------------------------------------------- 1 | if name == 'Alice': 2 | print('Hi, Alice.') 3 | elif age < 12: 4 | print('You are not Alice, kiddo.') 5 | elif age > 100: 6 | print('You are not Alice, grannie.') 7 | elif age > 2000: 8 | print('Unlike you, Alice is not an undead, immortal vampire.') -------------------------------------------------------------------------------- /CH03/collatzSequence.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # This is a programme that shows off the collatz sequence. 3 | 4 | # Determine collatz sequence 5 | def collatz(anyNumber): 6 | if anyNumber % 2 == 0: 7 | # Even 8 | return anyNumber // 2 9 | elif anyNumber % 2 == 1: 10 | # Odd 11 | return 3 * anyNumber + 1 12 | 13 | # Check if user value is a valid integer number. 14 | # Will request untill true 15 | def userInput(): 16 | while True: 17 | try: 18 | return int(input()) 19 | break 20 | except ValueError: 21 | print('Error: Number not a valid integer number.') 22 | print('Please select a valid integer number...') 23 | 24 | 25 | # Ask the player to guess a number. 26 | print('Please select any number...') 27 | myNumber = userInput() 28 | while myNumber != 1: 29 | myNumber = collatz(myNumber) 30 | print(myNumber) 31 | 32 | -------------------------------------------------------------------------------- /CH03/guessTheNumber.py: -------------------------------------------------------------------------------- 1 | # This is a guess the number game. 2 | import random 3 | secretNumber = random.randint(1, 20) 4 | print('I am thinking of a number between 1 and 20.') 5 | 6 | # Ask the player to guess 6 times. 7 | for guessesTaken in range(1, 7): 8 | print('Take a guess.') 9 | guess = int(input()) 10 | 11 | if guess < secretNumber: 12 | print('Your guess is too low.') 13 | elif guess > secretNumber: 14 | print('Your guess is too high.') 15 | else: 16 | break # This condition is the correct guess! 17 | 18 | if guess == secretNumber: 19 | print('Good job! You guessed my number in ' + str(guessesTaken) + ' guesses!') 20 | else: 21 | print('Nope. The number I was thinking of was ' + str(secretNumber)) 22 | -------------------------------------------------------------------------------- /CH03/helloFunc.py: -------------------------------------------------------------------------------- 1 | # Function that takes an argument and saves it in teh parameter 2 | 3 | def hello(name): 4 | print('Hello ' + name) 5 | 6 | hello('Alice') 7 | hello('Bob') -------------------------------------------------------------------------------- /CH03/magicBall.py: -------------------------------------------------------------------------------- 1 | import random 2 | 3 | def getAnswer(answerNumber): 4 | if answerNumber == 1: 5 | return 'It is certain' 6 | elif answerNumber == 2: 7 | return 'It is decidely decidedly so' 8 | elif answerNumber == 3: 9 | return 'Yes' 10 | elif answerNumber == 4: 11 | return 'Reply hazy try again' 12 | elif answerNumber == 5: 13 | return 'Ask again later' 14 | elif answerNumber == 6: 15 | return 'Concentrate and ask again' 16 | elif answerNumber == 7: 17 | return 'My reply is no' 18 | elif answerNumber == 8: 19 | return 'Outlook not so good' 20 | elif answerNumber == 9: 21 | return 'Very doubtful' 22 | 23 | r = random.randint(1, 9) 24 | fortune = getAnswer(r) 25 | print(fortune) -------------------------------------------------------------------------------- /CH03/sameName.py: -------------------------------------------------------------------------------- 1 | # Demonstrates the consequence of using the same name for teh global and local scope 2 | def spam(): 3 | eggs = 'spam local' 4 | print(eggs) # prints 'spam local' 5 | 6 | def bacon(): 7 | eggs = 'bacon local' 8 | print(eggs) # prints 'bacon local' 9 | spam() 10 | print(eggs) # prints 'bacon local' 11 | 12 | eggs = 'global' 13 | bacon() 14 | print(eggs) # prints 'global' 15 | -------------------------------------------------------------------------------- /CH03/zeroDivide.py: -------------------------------------------------------------------------------- 1 | # handles exceptions 2 | 3 | def spam(divideBy): 4 | try: 5 | return 42 / divideBy 6 | except ZeroDivisionError: 7 | print('Error: Invalid argument.') 8 | 9 | print(spam(2)) 10 | print(spam(12)) 11 | print(spam(0)) 12 | print(spam(1)) 13 | 14 | -------------------------------------------------------------------------------- /CH04/allMyCats.py: -------------------------------------------------------------------------------- 1 | # Start with empty list 2 | catNames = [] 3 | 4 | # While loop 5 | while True: 6 | print('Enter the name of cat ' + str(len(catNames) + 1) + ' (Or enter nothing to stop.):') 7 | name = input() 8 | if name == '': 9 | break 10 | catNames = catNames + [name] # list concatenation 11 | print('The cat names are:') 12 | for name in catNames: 13 | print(' ' + name) -------------------------------------------------------------------------------- /CH04/characterPictureGrid.py: -------------------------------------------------------------------------------- 1 | # charaterPictureGrid.py 2 | 3 | grid = [['.','.','.','.','.','.'], 4 | ['.','O','O','.','.','.'], 5 | ['O','O','O','O','.','.'], 6 | ['O','O','O','O','O','.'], 7 | ['.','O','O','O','O','O'], 8 | ['O','O','O','O','O','.'], 9 | ['O','O','O','O','.','.'], 10 | ['.','O','O','.','.','.'], 11 | ['.','.','.','.','.','.']] 12 | 13 | for i in range(len(grid[0])): 14 | for j in range(len(grid)): 15 | print(grid[j][i],end='') 16 | print(grid[j][-1]) -------------------------------------------------------------------------------- /CH04/commaCode.py: -------------------------------------------------------------------------------- 1 | spam = [ 'apples', 'bananas', 'tofu', 'cats'] 2 | spamString = '' 3 | 4 | for i in range(len(spam)-1): 5 | spamString += spam[i] + ', ' 6 | 7 | spamString += 'and ' + spam[-1] 8 | 9 | print(spamString) 10 | -------------------------------------------------------------------------------- /CH04/magic8Ball.py: -------------------------------------------------------------------------------- 1 | # Similar to the file in chapter 3, however a list is used. 2 | import random 3 | 4 | messages = ['It is certain', 5 | 'It is decidedly so', 6 | 'Yes definitely', 7 | 'Reply hazy try again', 8 | 'Ask again later', 9 | 'Concentrate and ask again', 10 | 'My reply is no', 11 | 'Outlook not so good', 12 | 'Very doubtful'] 13 | 14 | print(messages[random.randint(0, len(messages) - 1)]) -------------------------------------------------------------------------------- /CH04/myPets.py: -------------------------------------------------------------------------------- 1 | myPets = ['Zophie', 'Pooka', 'Fat-tail'] 2 | print('Enter a pet name:') 3 | name = input() 4 | if name not in myPets: 5 | print('I do not have a pet named ' + name) 6 | else: 7 | print(name + ' is my pet.') -------------------------------------------------------------------------------- /CH04/passingReference.py: -------------------------------------------------------------------------------- 1 | def eggs(someParameter): 2 | someParameter.append('Hello') 3 | 4 | spam = [1, 2, 3] 5 | eggs(spam) 6 | print(spam) 7 | -------------------------------------------------------------------------------- /CH05/birthdays.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # birthdays.py 3 | 4 | birthdays = {'Alice': 'Apr 1', 'Bob': 'Dec 12', 'Carol': 'Mar 4'} 5 | 6 | while True: 7 | print('Enter a name: (blank to quit)') 8 | name = input() 9 | if name == '': 10 | break 11 | 12 | if name in birthdays: 13 | print(birthdays[name] + ' is the birthday of ' + name) 14 | else: 15 | print('I do not have birthday information for ' + name) 16 | print('What is their birthday?') 17 | bday = input() 18 | birthdays[name] = bday 19 | print('Birthday database updated.') -------------------------------------------------------------------------------- /CH05/characterCount.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # characterCount.py 3 | 4 | message = 'It was a bright cold day in April, and the clocks were striking thirteen.' 5 | count = {} 6 | 7 | for character in message: 8 | count.setdefault(character, 0) 9 | count[character] = count[character] + 1 10 | 11 | print(count) -------------------------------------------------------------------------------- /CH05/inventory.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # inventory.py 3 | 4 | # inventory dictionary 5 | stuff = {'rope': 1, 'torch': 6, 'gold coin': 42, 'dagger': 1, 'arrow': 12} 6 | inv = {'gold coin': 42, 'rope': 1} 7 | dragonLoot = ['gold coin', 'dagger', 'gold coin', 'gold coin', 'ruby'] 8 | 9 | def displayInventory(inventory): 10 | print("Inventory:") 11 | item_total = 0 12 | for k, v in inventory.items(): 13 | print(str(v) + ' ' + k) 14 | item_total += v 15 | print("Total number of items: " + str(item_total)) 16 | 17 | def addToInventory(inventory, addedItems): 18 | # check if key are in the inventory and add if not 19 | for item in addedItems: 20 | if item not in inventory.keys(): 21 | inventory[item] = 0 22 | 23 | # now count items and add to current inventory 24 | for k, v in inventory.items(): 25 | inventory[k] += addedItems.count(str(k)) 26 | 27 | return inventory 28 | 29 | inv = addToInventory(inv, dragonLoot) 30 | displayInventory(inv) 31 | print(inv) 32 | displayInventory(stuff) 33 | -------------------------------------------------------------------------------- /CH05/itemsBought.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # itemsBought.py 3 | 4 | allGuests = { 5 | 'Alice': { 6 | 'apples': 5, 7 | 'pretzels': 12 8 | }, 9 | 'Bob': { 10 | 'ham sandwiches': 3, 11 | 'apples': 2 12 | }, 13 | 'Carol': { 14 | 'cups': 3, 15 | 'apple pies': 1 16 | } 17 | } 18 | 19 | def totalBrought(guests, item): 20 | numBrought = 0 21 | for k, v in guests.items(): 22 | numBrought = numBrought + v.get(item, 0) 23 | return numBrought 24 | 25 | print('Number of things being brought:') 26 | print(' - Apples ' + str(totalBrought(allGuests, 'apples'))) 27 | print(' - Cups ' + str(totalBrought(allGuests, 'cups'))) 28 | print(' - Cakes ' + str(totalBrought(allGuests, 'cakes'))) 29 | print(' - Ham Sandwiches ' + str(totalBrought(allGuests, 'ham sandwiches'))) 30 | print(' - Apple Pies ' + str(totalBrought(allGuests, 'apple pies'))) -------------------------------------------------------------------------------- /CH05/prettyCharacterCount.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # prettyCharacterCount.py 3 | 4 | import pprint 5 | 6 | message = 'It was a bright cold day in April, and the clocks were striking thirteen.' 7 | count = {} 8 | 9 | for character in message: 10 | count.setdefault(character, 0) 11 | count[character] = count[character] + 1 12 | 13 | pprint.pprint(count) -------------------------------------------------------------------------------- /CH05/ticTacToe.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # ticTacToe.py 3 | 4 | # see the full game here 5 | http://inventwithpython.com/chapter10.html 6 | 7 | # initialize empty board 8 | theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ', 9 | 'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ', 10 | 'low-L': ' ', 'low-M': ' ', 'low-R': ' '} 11 | 12 | 13 | # function to print the board 14 | def printBoard(board): 15 | print(board['top-L'] + '|' + board['top-M'] + '|' + board['top-R']) 16 | print('-+-+-') 17 | print(board['mid-L'] + '|' + board['mid-M'] + '|' + board['mid-R']) 18 | print('-+-+-') 19 | print(board['low-L'] + '|' + board['low-M'] + '|' + board['low-R']) 20 | 21 | turn = 'X' 22 | for i in range(9): 23 | printBoard(theBoard) 24 | print('Turn for ' + turn + '. Move on which space?') 25 | move = input() 26 | theBoard[move] = turn 27 | if turn == 'X': 28 | turn = 'O' 29 | else: 30 | turn = 'X' 31 | printBoard(theBoard) -------------------------------------------------------------------------------- /CH06/bulletPointAdder.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # bulletPointAdder.py - Adds WIki bullet points to the start 3 | # of each line of text to the clipbaord. 4 | 5 | import pyperclip 6 | text = pyperclip.paste() 7 | 8 | # Separate line and add stars. 9 | lines = text.split('/n') 10 | for i in range(len(lines)): # loop through all indexes in the "line" list 11 | lines[i] = '* ' + lines[i] # add star to each string in "lines" list 12 | 13 | text = '/n'.join(lines) 14 | 15 | pyperclip.copy(text) 16 | 17 | print(text) -------------------------------------------------------------------------------- /CH06/catNapping.py: -------------------------------------------------------------------------------- 1 | print('''Dear Alice, 2 | 3 | Eve's cat has been arrested for catnapping, cat burglary, and extortion. 4 | 5 | Sincerely, 6 | Bob''') -------------------------------------------------------------------------------- /CH06/picnicTable.py: -------------------------------------------------------------------------------- 1 | def printPicnic(itemsDict, leftWidth, rightWidth): 2 | print('PICNIC ITEMS'.center(leftWidth + rightWidth, '-')) 3 | for k, v in itemsDict.items(): 4 | print(k.ljust(leftWidth, '.') + str(v).rjust(rightWidth)) 5 | 6 | picnicItems = {'sandwiches': 4, 'apples': 12, 'cups': 4, 'cookies': 8000} 7 | printPicnic(picnicItems, 12, 5) 8 | printPicnic(picnicItems, 20, 6) -------------------------------------------------------------------------------- /CH06/printTable.py: -------------------------------------------------------------------------------- 1 | # Print a right justified table of data 2 | 3 | tableData = [['apples', 'oranges', 'cherries', 'banana'], 4 | ['Alice', 'Bob', 'Carol', 'David'], 5 | ['dogs', 'cats', 'moose', 'goose']] 6 | 7 | 8 | def printTable(tData): 9 | #colWidths = [0]*len(tableData) 10 | colWidths = [] 11 | 12 | for row in tData: 13 | lengths_of_words = [] 14 | for item in row: 15 | lengths_of_words.append(len(item)) 16 | colWidths.append(max(lengths_of_words)) 17 | 18 | max_width = max(colWidths) + 2 19 | print(row,lengths_of_words,colWidths,max_width) 20 | 21 | # Print the data with max width 22 | print(' Table Data '.center(3*max_width,'=')) 23 | for row in tData: 24 | for i in range(0,len(row)): 25 | print(' ', end='') 26 | print(row[i].rjust(max_width)) 27 | print('/n') 28 | 29 | # Print the data with max width 30 | print(' Table Data '.center(4*max_width,'=')) 31 | for row in tData: 32 | #print(' ', end='') 33 | print(row[0].rjust(max_width) + row[1].rjust(max_width) 34 | + row[2].rjust(max_width) + row[3].rjust(max_width)) 35 | 36 | printTable(tableData) 37 | -------------------------------------------------------------------------------- /CH06/pw.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # pw.py - An insecure password locker program. 3 | 4 | PASSWORDS = { 'email': 'FghjhgduY&^%34$98', 5 | 'blog': 'djhgjdhg7678adhb', 6 | 'luggage': 'eytuey4174e35' 7 | } 8 | 9 | import sys, pyperclip 10 | if len(sys.argv) < 2: 11 | print('Usage: python pw.py [account] - copy account password') 12 | sys.exit() 13 | 14 | account = sys.argv[1] # first comand line arg is the account name 15 | 16 | if account in PASSWORDS: 17 | pyperclip.copy(PASSWORDS[account]) 18 | print('Password for ' + account + ' copied to clipboard.') 19 | else: -------------------------------------------------------------------------------- /CH07/isPhoneNumber.py: -------------------------------------------------------------------------------- 1 | def isPhoneNumber(text): 2 | if len(text) != 12: 3 | return False # not phone number-sized 4 | for i in range(0, 3): 5 | if not text[i].isdecimal(): 6 | return False # not an area code 7 | if text[3] != '-': 8 | return False # does not have first hyphen 9 | for i in range(4, 7): 10 | if not text[i].isdecimal(): 11 | return False # does not have first 3 digits 12 | if text[7] != '-': 13 | return False # does not have second hyphen 14 | for i in range(8, 12): 15 | if not text[i].isdecimal(): 16 | return False # does not have last 4 digits 17 | return True # "text" is a phone number! 18 | 19 | print('415-555-4242 is a phone number:') 20 | print(isPhoneNumber('415-555-4242')) 21 | print('Moshi moshi is a phone number:') 22 | print(isPhoneNumber('Moshi moshi')) 23 | 24 | 25 | message = 'Call me at 415-555-1011 tomorrow. 415-555-9999 is my office.' 26 | for i in range(len(message)): 27 | chunk = message[i:i+12] 28 | if isPhoneNumber(chunk): 29 | print('Phone number found: ' + chunk) 30 | print('Done') -------------------------------------------------------------------------------- /CH07/phoneAndEmail.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # phoneAndEmail.py - Finds phone numbers and email addresses on the clipboard. 3 | 4 | import pyperclip, re 5 | 6 | phoneRegex = re.compile(r'''( 7 | (\d{3}|\(\d{3}\))? # area code 8 | (\s|-|\.)? # separator 9 | (\d{3}) # first 3 digits 10 | (\s|-|\.) # separator 11 | (\d{4}) # last 4 digits 12 | (\s*(ext|x|ext.)\s*(\d{2,5}))? # extension 13 | )''', re.VERBOSE) 14 | 15 | # Create email regex. 16 | emailRegex = re.compile(r'''( 17 | [a-zA-Z0-9._%+-]+ # username 18 | @ # @ symbol 19 | [a-zA-Z0-9.-]+ # domain name 20 | (\.[a-zA-Z]{2,4}){1,2} # dot-something 21 | )''', re.VERBOSE) 22 | 23 | # Find matches in clipboard text. 24 | text = str(pyperclip.paste()) 25 | 26 | matches = [] 27 | for groups in phoneRegex.findall(text): 28 | phoneNum = '-'.join([groups[1], groups[3], groups[5]]) 29 | if groups[8] != '': 30 | phoneNum += ' x' + groups[8] 31 | matches.append(phoneNum) 32 | for groups in emailRegex.findall(text): 33 | matches.append(groups[0]) 34 | 35 | # Copy results to the clipboard. 36 | if len(matches) > 0: 37 | pyperclip.copy('\n'.join(matches)) 38 | print('Copied to clipboard:') 39 | print('\n'.join(matches)) 40 | else: 41 | print('No phone numbers or email addresses found.') 42 | -------------------------------------------------------------------------------- /CH08/mcb.pyw: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # mcb.pyw - Saves and loads pieces of text to the clipboard. 3 | # Usage: py.exe mcb.pyw save - Saves clipboard to keyword. 4 | # py.exe mcb.pyw - Loads keyword to clipboard. 5 | # py.exe mcb.pyw list - Loads all keywords to clipboard. 6 | 7 | import shelve, pyperclip, sys 8 | 9 | mcbShelf = shelve.open('mcb') 10 | 11 | # Save clipboard content. 12 | if len(sys.argv) == 3 and sys.argv[1].lower() == 'save': 13 | mcbShelf[sys.argv[2]] = pyperclip.paste() 14 | elif len(sys.argv) == 2: 15 | # List keywords and load content. 16 | if sys.argv[1].lower() == 'list': 17 | pyperclip.copy(str(list(mcbShelf.keys()))) 18 | elif sys.argv[1] in mcbShelf: 19 | pyperclip.copy(mcbShelf[sys.argv[1]]) 20 | 21 | mcbShelf.close() 22 | -------------------------------------------------------------------------------- /CH08/randomQuizGenerator.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # randomQuizGenerator.py - Creates quizzes with questions and answers in 3 | # random order, along with the answer key. 4 | 5 | import random 6 | 7 | # The quiz data. Keys are states and values are their capitals. 8 | capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix', 'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver', 'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee', 'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise', 'Illinois': 'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas': 'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine': 'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan': 'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri': 'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada': 'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton', 'New Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh', 'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City', 'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence', 'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee': 'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont': 'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'West Virginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'} 9 | capitalsItems = list(capitals.items()) 10 | 11 | # Generate 35 quiz files. 12 | for quizNum in range(35): 13 | # Create the quiz and answer key files. 14 | quizFile = open('capitalsquiz%s.txt' % (quizNum + 1), 'w') 15 | answerKeyFile = open('capitalsquiz_answers%s.txt' % (quizNum + 1), 'w') 16 | 17 | # Write out the header for the quiz. 18 | quizFile.write('Name:\n\nDate:\n\nPeriod:\n\n') 19 | quizFile.write((' ' * 20) + 'State Capitals Quiz (Form %s)' % (quizNum + 1)) 20 | quizFile.write('\n\n') 21 | 22 | # Shuffle the order of the states. 23 | states = list(capitals.keys()) # get all states in a list 24 | random.shuffle(states) # randomize the order of the states 25 | 26 | # Loop through all 50 states, making a question for each. 27 | for questionNum in range(50): 28 | 29 | # Get right and wrong answers. 30 | correctAnswer = capitals[states[questionNum]] 31 | wrongAnswers = list(capitals.values()) # get a complete list of answers 32 | del wrongAnswers[wrongAnswers.index(correctAnswer)] # remove the right answer 33 | wrongAnswers = random.sample(wrongAnswers, 3) # pick 3 random ones 34 | 35 | answerOptions = wrongAnswers + [correctAnswer] 36 | random.shuffle(answerOptions) # randomize the order of the answers 37 | 38 | # Write the question and answer options to the quiz file. 39 | quizFile.write('%s. What is the capital of %s?\n' % (questionNum + 1, states[questionNum])) 40 | for i in range(4): 41 | quizFile.write(' %s. %s\n' % ('ABCD'[i], answerOptions[i])) 42 | quizFile.write('\n') 43 | 44 | # Write out the answer key to a file. 45 | answerKeyFile.write('%s. %s\n' % (questionNum + 1, 'ABCD'[answerOptions.index(correctAnswer)])) 46 | quizFile.close() 47 | answerKeyFile.close() 48 | -------------------------------------------------------------------------------- /CH09/backupToZip.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # backupToZip.py 3 | # Copies an entire folder and its contents into 4 | # a zip file whose filename increments. 5 | 6 | import zipfile, os 7 | 8 | def backupToZip(folder): 9 | # Backup the entire contents of "folder" into a zip file. 10 | 11 | folder = os.path.abspath(folder) # make sure folder is absolute 12 | 13 | # Figure out the filename this code should used based on 14 | # what files already exist. 15 | number = 1 16 | while True: 17 | zipFilename = os.path.basename(folder) + '_' + str(number) + '.zip' 18 | if not os.path.exists(zipFilename): 19 | break 20 | number = number + 1 21 | 22 | # Create the zip file. 23 | print('Creating %s...' % (zipFilename)) 24 | backupZip = zipfile.ZipFile(zipFilename, 'w') 25 | 26 | # Walk the entire folder tree and compress the files in each folder. 27 | for foldername, subfolders, filenames in os.walk(folder): 28 | print('Adding files in %s...' % (foldername)) 29 | # Add the current folder to the ZIP file. 30 | backupZip.write(foldername) 31 | 32 | # Add all the files in this folder to the ZIP file. 33 | for filename in filenames: 34 | if filename.startswith(os.path.basename(folder) + '_') and filename.endswith('.zip'): 35 | continue # don't backup the backup ZIP files 36 | backupZip.write(os.path.join(foldername, filename)) 37 | backupZip.close() 38 | print('Done.') 39 | 40 | 41 | #backupToZip('C:\\delicious') 42 | -------------------------------------------------------------------------------- /CH09/renameDates.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # renameDates.py - Renames filenames with American MM-DD-YYYY date format 3 | # to European DD-MM-YYYY. 4 | 5 | import shutil, os, re 6 | 7 | # Create a regex that matches files with the American date format. 8 | datePattern = re.compile(r"""^(.*?) # all text before the date 9 | ((0|1)?\d)- # one or two digits for the month 10 | ((0|1|2|3)?\d)- # one or two digits for the day 11 | ((19|20)\d\d) # four digits for the year (must start with 19 or 20) 12 | (.*?)$ # all text after the date 13 | """, re.VERBOSE) 14 | 15 | # Loop over the files in the working directory. 16 | for amerFilename in os.listdir('.'): 17 | mo = datePattern.search(amerFilename) 18 | 19 | # Skip files without a date. 20 | if mo == None: 21 | continue 22 | 23 | # Get the different parts of the filename. 24 | beforePart = mo.group(1) 25 | monthPart = mo.group(2) 26 | dayPart = mo.group(4) 27 | yearPart = mo.group(6) 28 | afterPart = mo.group(8) 29 | 30 | # Form the European-style filename. 31 | euroFilename = beforePart + dayPart + '-' + monthPart + '-' + yearPart + afterPart 32 | 33 | # Get the full, absolute file paths. 34 | absWorkingDir = os.path.abspath('.') 35 | amerFilename = os.path.join(absWorkingDir, amerFilename) 36 | euroFilename = os.path.join(absWorkingDir, euroFilename) 37 | 38 | # Rename the files. 39 | print('Renaming "%s" to "%s"...' % (amerFilename, euroFilename)) 40 | #shutil.move(amerFilename, euroFilename) # uncomment after testing 41 | -------------------------------------------------------------------------------- /CH10/boxPrint.py: -------------------------------------------------------------------------------- 1 | def boxPrint(symbol, width, height): 2 | if len(symbol) != 1: 3 | raise Exception('Symbol must be a single character string.') 4 | if width <= 2: 5 | raise Exception('Width must be greater than 2.') 6 | if height <= 2: 7 | raise Exception('Height must be greater than 2.') 8 | 9 | print(symbol * width) 10 | for i in range(height - 2): 11 | print(symbol + (' ' * (width - 2)) + symbol) 12 | print(symbol * width) 13 | 14 | for sym, w, h in (('*', 4, 4), ('O', 20, 5), ('x', 1, 3), ('ZZ', 3, 3)): 15 | try: 16 | boxPrint(sym, w, h) 17 | except Exception as err: 18 | print('An exception happened: ' + str(err)) 19 | -------------------------------------------------------------------------------- /CH10/buggyAddingProgram.py: -------------------------------------------------------------------------------- 1 | print('Enter the first number to add:') 2 | first = input() 3 | print('Enter the second number to add:') 4 | second = input() 5 | print('Enter the third number to add:') 6 | third = input() 7 | print('The sum is ' + first + second + third) -------------------------------------------------------------------------------- /CH10/coinFlip.py: -------------------------------------------------------------------------------- 1 | import random 2 | heads = 0 3 | for i in range(1, 1001): 4 | if random.randint(0, 1) == 1: 5 | heads = heads + 1 6 | if i == 500: 7 | print('Halfway done!') 8 | print('Heads came up ' + str(heads) + ' times.') 9 | -------------------------------------------------------------------------------- /CH10/errorExample.py: -------------------------------------------------------------------------------- 1 | def spam(): 2 | bacon() 3 | 4 | def bacon(): 5 | raise Exception('This is the error message.') 6 | 7 | spam() -------------------------------------------------------------------------------- /CH10/exceptionHandling.py: -------------------------------------------------------------------------------- 1 | try: 2 | float("hello") 3 | except Exception as exc: 4 | print(type(exc)) 5 | 6 | # -------------------------------------------------------------------------------- /CH10/factorialLog.py: -------------------------------------------------------------------------------- 1 | import logging 2 | logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') 3 | logging.debug('Start of program') 4 | 5 | def factorial(n): 6 | logging.debug('Start of factorial(%s%%)' % (n)) 7 | total = 1 8 | for i in range(1, n + 1): 9 | total *= i 10 | logging.debug('i is ' + str(i) + ', total is ' + str(total)) 11 | return total 12 | logging.debug('End of factorial(%s%%)' % (n)) 13 | 14 | print(factorial(5)) 15 | logging.debug('End of program') -------------------------------------------------------------------------------- /CH11/downloadXkcd.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # downloadXkcd.py - Downloads every single XKCD comic. 3 | 4 | import requests, os, bs4 5 | 6 | url = 'http://xkcd.com' # starting url 7 | os.makedirs('xkcd', exist_ok=True) # store comics in ./xkcd 8 | while not url.endswith('#'): 9 | # Download the page. 10 | print('Downloading page %s...' % url) 11 | print(url) 12 | res = requests.get(url) 13 | res.raise_for_status() 14 | 15 | soup = bs4.BeautifulSoup(res.text) 16 | 17 | # Find the URL of the comic image. 18 | comicElem = soup.select('#comic a img') 19 | if comicElem == []: 20 | print('Could not find comic image.') 21 | else: 22 | comicUrl = comicElem[0].get('src') 23 | print(comicUrl) 24 | # Download the image. 25 | print('Downloading image %s...' % (comicUrl)) 26 | res = requests.get('http:'+comicUrl) 27 | res.raise_for_status() 28 | 29 | # Save the image to ./xkcd 30 | imageFile = open(os.path.join('xkcd', os.path.basename(comicUrl)), 'wb') 31 | for chunk in res.iter_content(100000): 32 | imageFile.write(chunk) 33 | imageFile.close() 34 | 35 | # Get the Prev button's url. 36 | prevLink = soup.select('a[rel="prev"]')[0] 37 | url = 'http://xkcd.com' + prevLink.get('href') 38 | 39 | print('Done.') 40 | -------------------------------------------------------------------------------- /CH11/lucky.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # lucky.py - Opens several Google search results. 3 | 4 | import requests, sys, webbrowser, bs4 5 | 6 | print('Googling...') # display text while downloading the Google page 7 | res = requests.get('http://google.com/search?q=' + ' '.join(sys.argv[1:])) 8 | res.raise_for_status() 9 | 10 | # Retrieve top search result links. 11 | soup = bs4.BeautifulSoup(res.text) 12 | 13 | # Open a browser tab for each result. 14 | linkElems = soup.select('.r a') 15 | numOpen = min(5, len(linkElems)) 16 | for i in range(numOpen): 17 | webbrowser.open('http://google.com' + linkElems[i].get('href')) 18 | -------------------------------------------------------------------------------- /CH11/mapIt.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # mapIt.py - Launches a map in the browser using an address from the 3 | # command line or clipboard. 4 | 5 | import webbrowser, sys, pyperclip 6 | 7 | if len(sys.argv) > 1: 8 | # Get address from command line. 9 | address = ' '.join(sys.argv[1:]) 10 | else: 11 | # Get address from clipboard. 12 | address = pyperclip.paste() 13 | 14 | webbrowser.open('https://www.google.com/maps/place/' + address) 15 | -------------------------------------------------------------------------------- /CH11/wbScraper.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/python3 2 | # wbScraper.py - DOwnload file from website and saves to file. 3 | # TODO: Get address from clipboard. 4 | 5 | import requests 6 | 7 | res = requests.get('https://automatetheboringstuff.com/files/rj.txt') 8 | res.raise_for_status() 9 | len(res.text) 10 | res.status_code == requests.codes.ok 11 | print(res.text[:250]) 12 | playFile = open('RomeoAndJuliet.txt', 'wb') 13 | for chunk in res.iter_content(100000): 14 | playFile.write(chunk) 15 | 16 | playFile.close() 17 | 18 | 19 | -------------------------------------------------------------------------------- /CH12/census2010.py: -------------------------------------------------------------------------------- 1 | allData = {'AK': {'Aleutians East': {'pop': 3141, 'tracts': 1}, 2 | 'Aleutians West': {'pop': 5561, 'tracts': 2}, 3 | 'Anchorage': {'pop': 291826, 'tracts': 55}, 4 | 'Bethel': {'pop': 17013, 'tracts': 3}, 5 | 'Bristol Bay': {'pop': 997, 'tracts': 1}, 6 | 'Denali': {'pop': 1826, 'tracts': 1}, 7 | 'Dillingham': {'pop': 4847, 'tracts': 2}, 8 | 'Fairbanks North Star': {'pop': 97581, 'tracts': 19}, 9 | 'Haines': {'pop': 2508, 'tracts': 1}, 10 | 'Hoonah-Angoon': {'pop': 2150, 'tracts': 2}, 11 | 'Juneau': {'pop': 31275, 'tracts': 6}, 12 | 'Kenai Peninsula': {'pop': 55400, 'tracts': 13}, 13 | 'Ketchikan Gateway': {'pop': 13477, 'tracts': 4}, 14 | 'Kodiak Island': {'pop': 13592, 'tracts': 5}, 15 | 'Lake and Peninsula': {'pop': 1631, 'tracts': 1}, 16 | 'Matanuska-Susitna': {'pop': 88995, 'tracts': 24}, 17 | 'Nome': {'pop': 9492, 'tracts': 2}, 18 | 'North Slope': {'pop': 9430, 'tracts': 3}, 19 | 'Northwest Arctic': {'pop': 7523, 'tracts': 2}, 20 | 'Petersburg': {'pop': 3815, 'tracts': 1}, 21 | 'Prince of Wales-Hyder': {'pop': 5559, 'tracts': 4}, 22 | 'Sitka': {'pop': 8881, 'tracts': 2}, 23 | 'Skagway': {'pop': 968, 'tracts': 1}, 24 | 'Southeast Fairbanks': {'pop': 7029, 'tracts': 2}, 25 | 'Valdez-Cordova': {'pop': 9636, 'tracts': 3}, 26 | 'Wade Hampton': {'pop': 7459, 'tracts': 1}, 27 | 'Wrangell': {'pop': 2369, 'tracts': 1}, 28 | 'Yakutat': {'pop': 662, 'tracts': 1}, 29 | 'Yukon-Koyukuk': {'pop': 5588, 'tracts': 4}}, 30 | 'AL': {'Autauga': {'pop': 54571, 'tracts': 12}, 31 | 'Baldwin': {'pop': 182265, 'tracts': 31}, 32 | 'Barbour': {'pop': 27457, 'tracts': 9}, 33 | 'Bibb': {'pop': 22915, 'tracts': 4}, 34 | 'Blount': {'pop': 57322, 'tracts': 9}, 35 | 'Bullock': {'pop': 10914, 'tracts': 3}, 36 | 'Butler': {'pop': 20947, 'tracts': 9}, 37 | 'Calhoun': {'pop': 118572, 'tracts': 31}, 38 | 'Chambers': {'pop': 34215, 'tracts': 9}, 39 | 'Cherokee': {'pop': 25989, 'tracts': 6}, 40 | 'Chilton': {'pop': 43643, 'tracts': 9}, 41 | 'Choctaw': {'pop': 13859, 'tracts': 4}, 42 | 'Clarke': {'pop': 25833, 'tracts': 9}, 43 | 'Clay': {'pop': 13932, 'tracts': 4}, 44 | 'Cleburne': {'pop': 14972, 'tracts': 4}, 45 | 'Coffee': {'pop': 49948, 'tracts': 14}, 46 | 'Colbert': {'pop': 54428, 'tracts': 14}, 47 | 'Conecuh': {'pop': 13228, 'tracts': 5}, 48 | 'Coosa': {'pop': 11539, 'tracts': 3}, 49 | 'Covington': {'pop': 37765, 'tracts': 14}, 50 | 'Crenshaw': {'pop': 13906, 'tracts': 6}, 51 | 'Cullman': {'pop': 80406, 'tracts': 18}, 52 | 'Dale': {'pop': 50251, 'tracts': 14}, 53 | 'Dallas': {'pop': 43820, 'tracts': 15}, 54 | 'DeKalb': {'pop': 71109, 'tracts': 14}, 55 | 'Elmore': {'pop': 79303, 'tracts': 15}, 56 | 'Escambia': {'pop': 38319, 'tracts': 9}, 57 | 'Etowah': {'pop': 104430, 'tracts': 30}, 58 | 'Fayette': {'pop': 17241, 'tracts': 5}, 59 | 'Franklin': {'pop': 31704, 'tracts': 9}, 60 | 'Geneva': {'pop': 26790, 'tracts': 6}, 61 | 'Greene': {'pop': 9045, 'tracts': 3}, 62 | 'Hale': {'pop': 15760, 'tracts': 6}, 63 | 'Henry': {'pop': 17302, 'tracts': 6}, 64 | 'Houston': {'pop': 101547, 'tracts': 22}, 65 | 'Jackson': {'pop': 53227, 'tracts': 11}, 66 | 'Jefferson': {'pop': 658466, 'tracts': 163}, 67 | 'Lamar': {'pop': 14564, 'tracts': 3}, 68 | 'Lauderdale': {'pop': 92709, 'tracts': 22}, 69 | 'Lawrence': {'pop': 34339, 'tracts': 9}, 70 | 'Lee': {'pop': 140247, 'tracts': 27}, 71 | 'Limestone': {'pop': 82782, 'tracts': 16}, 72 | 'Lowndes': {'pop': 11299, 'tracts': 4}, 73 | 'Macon': {'pop': 21452, 'tracts': 12}, 74 | 'Madison': {'pop': 334811, 'tracts': 73}, 75 | 'Marengo': {'pop': 21027, 'tracts': 6}, 76 | 'Marion': {'pop': 30776, 'tracts': 8}, 77 | 'Marshall': {'pop': 93019, 'tracts': 18}, 78 | 'Mobile': {'pop': 412992, 'tracts': 114}, 79 | 'Monroe': {'pop': 23068, 'tracts': 7}, 80 | 'Montgomery': {'pop': 229363, 'tracts': 65}, 81 | 'Morgan': {'pop': 119490, 'tracts': 27}, 82 | 'Perry': {'pop': 10591, 'tracts': 3}, 83 | 'Pickens': {'pop': 19746, 'tracts': 5}, 84 | 'Pike': {'pop': 32899, 'tracts': 8}, 85 | 'Randolph': {'pop': 22913, 'tracts': 6}, 86 | 'Russell': {'pop': 52947, 'tracts': 13}, 87 | 'Shelby': {'pop': 195085, 'tracts': 48}, 88 | 'St. Clair': {'pop': 83593, 'tracts': 13}, 89 | 'Sumter': {'pop': 13763, 'tracts': 4}, 90 | 'Talladega': {'pop': 82291, 'tracts': 22}, 91 | 'Tallapoosa': {'pop': 41616, 'tracts': 10}, 92 | 'Tuscaloosa': {'pop': 194656, 'tracts': 47}, 93 | 'Walker': {'pop': 67023, 'tracts': 18}, 94 | 'Washington': {'pop': 17581, 'tracts': 5}, 95 | 'Wilcox': {'pop': 11670, 'tracts': 4}, 96 | 'Winston': {'pop': 24484, 'tracts': 7}}, 97 | 'AR': {'Arkansas': {'pop': 19019, 'tracts': 8}, 98 | 'Ashley': {'pop': 21853, 'tracts': 7}, 99 | 'Baxter': {'pop': 41513, 'tracts': 9}, 100 | 'Benton': {'pop': 221339, 'tracts': 49}, 101 | 'Boone': {'pop': 36903, 'tracts': 7}, 102 | 'Bradley': {'pop': 11508, 'tracts': 5}, 103 | 'Calhoun': {'pop': 5368, 'tracts': 2}, 104 | 'Carroll': {'pop': 27446, 'tracts': 5}, 105 | 'Chicot': {'pop': 11800, 'tracts': 4}, 106 | 'Clark': {'pop': 22995, 'tracts': 5}, 107 | 'Clay': {'pop': 16083, 'tracts': 6}, 108 | 'Cleburne': {'pop': 25970, 'tracts': 7}, 109 | 'Cleveland': {'pop': 8689, 'tracts': 2}, 110 | 'Columbia': {'pop': 24552, 'tracts': 5}, 111 | 'Conway': {'pop': 21273, 'tracts': 6}, 112 | 'Craighead': {'pop': 96443, 'tracts': 17}, 113 | 'Crawford': {'pop': 61948, 'tracts': 11}, 114 | 'Crittenden': {'pop': 50902, 'tracts': 20}, 115 | 'Cross': {'pop': 17870, 'tracts': 6}, 116 | 'Dallas': {'pop': 8116, 'tracts': 3}, 117 | 'Desha': {'pop': 13008, 'tracts': 5}, 118 | 'Drew': {'pop': 18509, 'tracts': 5}, 119 | 'Faulkner': {'pop': 113237, 'tracts': 25}, 120 | 'Franklin': {'pop': 18125, 'tracts': 3}, 121 | 'Fulton': {'pop': 12245, 'tracts': 2}, 122 | 'Garland': {'pop': 96024, 'tracts': 20}, 123 | 'Grant': {'pop': 17853, 'tracts': 4}, 124 | 'Greene': {'pop': 42090, 'tracts': 9}, 125 | 'Hempstead': {'pop': 22609, 'tracts': 5}, 126 | 'Hot Spring': {'pop': 32923, 'tracts': 7}, 127 | 'Howard': {'pop': 13789, 'tracts': 3}, 128 | 'Independence': {'pop': 36647, 'tracts': 8}, 129 | 'Izard': {'pop': 13696, 'tracts': 4}, 130 | 'Jackson': {'pop': 17997, 'tracts': 5}, 131 | 'Jefferson': {'pop': 77435, 'tracts': 24}, 132 | 'Johnson': {'pop': 25540, 'tracts': 6}, 133 | 'Lafayette': {'pop': 7645, 'tracts': 2}, 134 | 'Lawrence': {'pop': 17415, 'tracts': 6}, 135 | 'Lee': {'pop': 10424, 'tracts': 4}, 136 | 'Lincoln': {'pop': 14134, 'tracts': 4}, 137 | 'Little River': {'pop': 13171, 'tracts': 4}, 138 | 'Logan': {'pop': 22353, 'tracts': 6}, 139 | 'Lonoke': {'pop': 68356, 'tracts': 16}, 140 | 'Madison': {'pop': 15717, 'tracts': 4}, 141 | 'Marion': {'pop': 16653, 'tracts': 4}, 142 | 'Miller': {'pop': 43462, 'tracts': 12}, 143 | 'Mississippi': {'pop': 46480, 'tracts': 12}, 144 | 'Monroe': {'pop': 8149, 'tracts': 3}, 145 | 'Montgomery': {'pop': 9487, 'tracts': 3}, 146 | 'Nevada': {'pop': 8997, 'tracts': 3}, 147 | 'Newton': {'pop': 8330, 'tracts': 2}, 148 | 'Ouachita': {'pop': 26120, 'tracts': 6}, 149 | 'Perry': {'pop': 10445, 'tracts': 3}, 150 | 'Phillips': {'pop': 21757, 'tracts': 6}, 151 | 'Pike': {'pop': 11291, 'tracts': 3}, 152 | 'Poinsett': {'pop': 24583, 'tracts': 7}, 153 | 'Polk': {'pop': 20662, 'tracts': 6}, 154 | 'Pope': {'pop': 61754, 'tracts': 11}, 155 | 'Prairie': {'pop': 8715, 'tracts': 3}, 156 | 'Pulaski': {'pop': 382748, 'tracts': 95}, 157 | 'Randolph': {'pop': 17969, 'tracts': 4}, 158 | 'Saline': {'pop': 107118, 'tracts': 21}, 159 | 'Scott': {'pop': 11233, 'tracts': 3}, 160 | 'Searcy': {'pop': 8195, 'tracts': 3}, 161 | 'Sebastian': {'pop': 125744, 'tracts': 26}, 162 | 'Sevier': {'pop': 17058, 'tracts': 4}, 163 | 'Sharp': {'pop': 17264, 'tracts': 4}, 164 | 'St. Francis': {'pop': 28258, 'tracts': 6}, 165 | 'Stone': {'pop': 12394, 'tracts': 3}, 166 | 'Union': {'pop': 41639, 'tracts': 10}, 167 | 'Van Buren': {'pop': 17295, 'tracts': 5}, 168 | 'Washington': {'pop': 203065, 'tracts': 32}, 169 | 'White': {'pop': 77076, 'tracts': 13}, 170 | 'Woodruff': {'pop': 7260, 'tracts': 2}, 171 | 'Yell': {'pop': 22185, 'tracts': 6}}, 172 | 'AZ': {'Apache': {'pop': 71518, 'tracts': 16}, 173 | 'Cochise': {'pop': 131346, 'tracts': 32}, 174 | 'Coconino': {'pop': 134421, 'tracts': 28}, 175 | 'Gila': {'pop': 53597, 'tracts': 16}, 176 | 'Graham': {'pop': 37220, 'tracts': 9}, 177 | 'Greenlee': {'pop': 8437, 'tracts': 3}, 178 | 'La Paz': {'pop': 20489, 'tracts': 9}, 179 | 'Maricopa': {'pop': 3817117, 'tracts': 916}, 180 | 'Mohave': {'pop': 200186, 'tracts': 43}, 181 | 'Navajo': {'pop': 107449, 'tracts': 31}, 182 | 'Pima': {'pop': 980263, 'tracts': 241}, 183 | 'Pinal': {'pop': 375770, 'tracts': 75}, 184 | 'Santa Cruz': {'pop': 47420, 'tracts': 10}, 185 | 'Yavapai': {'pop': 211033, 'tracts': 42}, 186 | 'Yuma': {'pop': 195751, 'tracts': 55}}, 187 | 'CA': {'Alameda': {'pop': 1510271, 'tracts': 360}, 188 | 'Alpine': {'pop': 1175, 'tracts': 1}, 189 | 'Amador': {'pop': 38091, 'tracts': 9}, 190 | 'Butte': {'pop': 220000, 'tracts': 51}, 191 | 'Calaveras': {'pop': 45578, 'tracts': 10}, 192 | 'Colusa': {'pop': 21419, 'tracts': 5}, 193 | 'Contra Costa': {'pop': 1049025, 'tracts': 208}, 194 | 'Del Norte': {'pop': 28610, 'tracts': 7}, 195 | 'El Dorado': {'pop': 181058, 'tracts': 43}, 196 | 'Fresno': {'pop': 930450, 'tracts': 199}, 197 | 'Glenn': {'pop': 28122, 'tracts': 6}, 198 | 'Humboldt': {'pop': 134623, 'tracts': 30}, 199 | 'Imperial': {'pop': 174528, 'tracts': 31}, 200 | 'Inyo': {'pop': 18546, 'tracts': 6}, 201 | 'Kern': {'pop': 839631, 'tracts': 151}, 202 | 'Kings': {'pop': 152982, 'tracts': 27}, 203 | 'Lake': {'pop': 64665, 'tracts': 15}, 204 | 'Lassen': {'pop': 34895, 'tracts': 9}, 205 | 'Los Angeles': {'pop': 9818605, 'tracts': 2343}, 206 | 'Madera': {'pop': 150865, 'tracts': 23}, 207 | 'Marin': {'pop': 252409, 'tracts': 55}, 208 | 'Mariposa': {'pop': 18251, 'tracts': 6}, 209 | 'Mendocino': {'pop': 87841, 'tracts': 20}, 210 | 'Merced': {'pop': 255793, 'tracts': 49}, 211 | 'Modoc': {'pop': 9686, 'tracts': 4}, 212 | 'Mono': {'pop': 14202, 'tracts': 3}, 213 | 'Monterey': {'pop': 415057, 'tracts': 93}, 214 | 'Napa': {'pop': 136484, 'tracts': 40}, 215 | 'Nevada': {'pop': 98764, 'tracts': 20}, 216 | 'Orange': {'pop': 3010232, 'tracts': 583}, 217 | 'Placer': {'pop': 348432, 'tracts': 85}, 218 | 'Plumas': {'pop': 20007, 'tracts': 7}, 219 | 'Riverside': {'pop': 2189641, 'tracts': 453}, 220 | 'Sacramento': {'pop': 1418788, 'tracts': 317}, 221 | 'San Benito': {'pop': 55269, 'tracts': 11}, 222 | 'San Bernardino': {'pop': 2035210, 'tracts': 369}, 223 | 'San Diego': {'pop': 3095313, 'tracts': 628}, 224 | 'San Francisco': {'pop': 805235, 'tracts': 196}, 225 | 'San Joaquin': {'pop': 685306, 'tracts': 139}, 226 | 'San Luis Obispo': {'pop': 269637, 'tracts': 53}, 227 | 'San Mateo': {'pop': 718451, 'tracts': 158}, 228 | 'Santa Barbara': {'pop': 423895, 'tracts': 90}, 229 | 'Santa Clara': {'pop': 1781642, 'tracts': 372}, 230 | 'Santa Cruz': {'pop': 262382, 'tracts': 52}, 231 | 'Shasta': {'pop': 177223, 'tracts': 48}, 232 | 'Sierra': {'pop': 3240, 'tracts': 1}, 233 | 'Siskiyou': {'pop': 44900, 'tracts': 14}, 234 | 'Solano': {'pop': 413344, 'tracts': 96}, 235 | 'Sonoma': {'pop': 483878, 'tracts': 99}, 236 | 'Stanislaus': {'pop': 514453, 'tracts': 94}, 237 | 'Sutter': {'pop': 94737, 'tracts': 21}, 238 | 'Tehama': {'pop': 63463, 'tracts': 11}, 239 | 'Trinity': {'pop': 13786, 'tracts': 5}, 240 | 'Tulare': {'pop': 442179, 'tracts': 78}, 241 | 'Tuolumne': {'pop': 55365, 'tracts': 11}, 242 | 'Ventura': {'pop': 823318, 'tracts': 174}, 243 | 'Yolo': {'pop': 200849, 'tracts': 41}, 244 | 'Yuba': {'pop': 72155, 'tracts': 14}}, 245 | 'CO': {'Adams': {'pop': 441603, 'tracts': 97}, 246 | 'Alamosa': {'pop': 15445, 'tracts': 4}, 247 | 'Arapahoe': {'pop': 572003, 'tracts': 147}, 248 | 'Archuleta': {'pop': 12084, 'tracts': 4}, 249 | 'Baca': {'pop': 3788, 'tracts': 2}, 250 | 'Bent': {'pop': 6499, 'tracts': 1}, 251 | 'Boulder': {'pop': 294567, 'tracts': 68}, 252 | 'Broomfield': {'pop': 55889, 'tracts': 18}, 253 | 'Chaffee': {'pop': 17809, 'tracts': 5}, 254 | 'Cheyenne': {'pop': 1836, 'tracts': 1}, 255 | 'Clear Creek': {'pop': 9088, 'tracts': 3}, 256 | 'Conejos': {'pop': 8256, 'tracts': 2}, 257 | 'Costilla': {'pop': 3524, 'tracts': 2}, 258 | 'Crowley': {'pop': 5823, 'tracts': 1}, 259 | 'Custer': {'pop': 4255, 'tracts': 1}, 260 | 'Delta': {'pop': 30952, 'tracts': 7}, 261 | 'Denver': {'pop': 600158, 'tracts': 144}, 262 | 'Dolores': {'pop': 2064, 'tracts': 1}, 263 | 'Douglas': {'pop': 285465, 'tracts': 61}, 264 | 'Eagle': {'pop': 52197, 'tracts': 14}, 265 | 'El Paso': {'pop': 622263, 'tracts': 130}, 266 | 'Elbert': {'pop': 23086, 'tracts': 7}, 267 | 'Fremont': {'pop': 46824, 'tracts': 14}, 268 | 'Garfield': {'pop': 56389, 'tracts': 11}, 269 | 'Gilpin': {'pop': 5441, 'tracts': 1}, 270 | 'Grand': {'pop': 14843, 'tracts': 3}, 271 | 'Gunnison': {'pop': 15324, 'tracts': 4}, 272 | 'Hinsdale': {'pop': 843, 'tracts': 1}, 273 | 'Huerfano': {'pop': 6711, 'tracts': 2}, 274 | 'Jackson': {'pop': 1394, 'tracts': 1}, 275 | 'Jefferson': {'pop': 534543, 'tracts': 138}, 276 | 'Kiowa': {'pop': 1398, 'tracts': 1}, 277 | 'Kit Carson': {'pop': 8270, 'tracts': 3}, 278 | 'La Plata': {'pop': 51334, 'tracts': 10}, 279 | 'Lake': {'pop': 7310, 'tracts': 2}, 280 | 'Larimer': {'pop': 299630, 'tracts': 73}, 281 | 'Las Animas': {'pop': 15507, 'tracts': 6}, 282 | 'Lincoln': {'pop': 5467, 'tracts': 2}, 283 | 'Logan': {'pop': 22709, 'tracts': 6}, 284 | 'Mesa': {'pop': 146723, 'tracts': 29}, 285 | 'Mineral': {'pop': 712, 'tracts': 1}, 286 | 'Moffat': {'pop': 13795, 'tracts': 4}, 287 | 'Montezuma': {'pop': 25535, 'tracts': 7}, 288 | 'Montrose': {'pop': 41276, 'tracts': 10}, 289 | 'Morgan': {'pop': 28159, 'tracts': 8}, 290 | 'Otero': {'pop': 18831, 'tracts': 7}, 291 | 'Ouray': {'pop': 4436, 'tracts': 1}, 292 | 'Park': {'pop': 16206, 'tracts': 5}, 293 | 'Phillips': {'pop': 4442, 'tracts': 2}, 294 | 'Pitkin': {'pop': 17148, 'tracts': 4}, 295 | 'Prowers': {'pop': 12551, 'tracts': 5}, 296 | 'Pueblo': {'pop': 159063, 'tracts': 55}, 297 | 'Rio Blanco': {'pop': 6666, 'tracts': 2}, 298 | 'Rio Grande': {'pop': 11982, 'tracts': 3}, 299 | 'Routt': {'pop': 23509, 'tracts': 8}, 300 | 'Saguache': {'pop': 6108, 'tracts': 2}, 301 | 'San Juan': {'pop': 699, 'tracts': 1}, 302 | 'San Miguel': {'pop': 7359, 'tracts': 4}, 303 | 'Sedgwick': {'pop': 2379, 'tracts': 1}, 304 | 'Summit': {'pop': 27994, 'tracts': 5}, 305 | 'Teller': {'pop': 23350, 'tracts': 6}, 306 | 'Washington': {'pop': 4814, 'tracts': 2}, 307 | 'Weld': {'pop': 252825, 'tracts': 77}, 308 | 'Yuma': {'pop': 10043, 'tracts': 2}}, 309 | 'CT': {'Fairfield': {'pop': 916829, 'tracts': 211}, 310 | 'Hartford': {'pop': 894014, 'tracts': 224}, 311 | 'Litchfield': {'pop': 189927, 'tracts': 51}, 312 | 'Middlesex': {'pop': 165676, 'tracts': 36}, 313 | 'New Haven': {'pop': 862477, 'tracts': 190}, 314 | 'New London': {'pop': 274055, 'tracts': 66}, 315 | 'Tolland': {'pop': 152691, 'tracts': 29}, 316 | 'Windham': {'pop': 118428, 'tracts': 25}}, 317 | 'DC': {'District of Columbia': {'pop': 601723, 'tracts': 179}}, 318 | 'DE': {'Kent': {'pop': 162310, 'tracts': 33}, 319 | 'New Castle': {'pop': 538479, 'tracts': 131}, 320 | 'Sussex': {'pop': 197145, 'tracts': 54}}, 321 | 'FL': {'Alachua': {'pop': 247336, 'tracts': 56}, 322 | 'Baker': {'pop': 27115, 'tracts': 4}, 323 | 'Bay': {'pop': 168852, 'tracts': 44}, 324 | 'Bradford': {'pop': 28520, 'tracts': 4}, 325 | 'Brevard': {'pop': 543376, 'tracts': 113}, 326 | 'Broward': {'pop': 1748066, 'tracts': 361}, 327 | 'Calhoun': {'pop': 14625, 'tracts': 3}, 328 | 'Charlotte': {'pop': 159978, 'tracts': 39}, 329 | 'Citrus': {'pop': 141236, 'tracts': 27}, 330 | 'Clay': {'pop': 190865, 'tracts': 30}, 331 | 'Collier': {'pop': 321520, 'tracts': 73}, 332 | 'Columbia': {'pop': 67531, 'tracts': 12}, 333 | 'DeSoto': {'pop': 34862, 'tracts': 9}, 334 | 'Dixie': {'pop': 16422, 'tracts': 3}, 335 | 'Duval': {'pop': 864263, 'tracts': 173}, 336 | 'Escambia': {'pop': 297619, 'tracts': 71}, 337 | 'Flagler': {'pop': 95696, 'tracts': 20}, 338 | 'Franklin': {'pop': 11549, 'tracts': 4}, 339 | 'Gadsden': {'pop': 46389, 'tracts': 9}, 340 | 'Gilchrist': {'pop': 16939, 'tracts': 5}, 341 | 'Glades': {'pop': 12884, 'tracts': 4}, 342 | 'Gulf': {'pop': 15863, 'tracts': 3}, 343 | 'Hamilton': {'pop': 14799, 'tracts': 3}, 344 | 'Hardee': {'pop': 27731, 'tracts': 6}, 345 | 'Hendry': {'pop': 39140, 'tracts': 7}, 346 | 'Hernando': {'pop': 172778, 'tracts': 45}, 347 | 'Highlands': {'pop': 98786, 'tracts': 27}, 348 | 'Hillsborough': {'pop': 1229226, 'tracts': 321}, 349 | 'Holmes': {'pop': 19927, 'tracts': 4}, 350 | 'Indian River': {'pop': 138028, 'tracts': 30}, 351 | 'Jackson': {'pop': 49746, 'tracts': 11}, 352 | 'Jefferson': {'pop': 14761, 'tracts': 3}, 353 | 'Lafayette': {'pop': 8870, 'tracts': 2}, 354 | 'Lake': {'pop': 297052, 'tracts': 56}, 355 | 'Lee': {'pop': 618754, 'tracts': 166}, 356 | 'Leon': {'pop': 275487, 'tracts': 68}, 357 | 'Levy': {'pop': 40801, 'tracts': 9}, 358 | 'Liberty': {'pop': 8365, 'tracts': 2}, 359 | 'Madison': {'pop': 19224, 'tracts': 5}, 360 | 'Manatee': {'pop': 322833, 'tracts': 78}, 361 | 'Marion': {'pop': 331298, 'tracts': 63}, 362 | 'Martin': {'pop': 146318, 'tracts': 35}, 363 | 'Miami-Dade': {'pop': 2496435, 'tracts': 519}, 364 | 'Monroe': {'pop': 73090, 'tracts': 30}, 365 | 'Nassau': {'pop': 73314, 'tracts': 12}, 366 | 'Okaloosa': {'pop': 180822, 'tracts': 41}, 367 | 'Okeechobee': {'pop': 39996, 'tracts': 12}, 368 | 'Orange': {'pop': 1145956, 'tracts': 207}, 369 | 'Osceola': {'pop': 268685, 'tracts': 41}, 370 | 'Palm Beach': {'pop': 1320134, 'tracts': 337}, 371 | 'Pasco': {'pop': 464697, 'tracts': 134}, 372 | 'Pinellas': {'pop': 916542, 'tracts': 245}, 373 | 'Polk': {'pop': 602095, 'tracts': 154}, 374 | 'Putnam': {'pop': 74364, 'tracts': 17}, 375 | 'Santa Rosa': {'pop': 151372, 'tracts': 25}, 376 | 'Sarasota': {'pop': 379448, 'tracts': 94}, 377 | 'Seminole': {'pop': 422718, 'tracts': 86}, 378 | 'St. Johns': {'pop': 190039, 'tracts': 40}, 379 | 'St. Lucie': {'pop': 277789, 'tracts': 44}, 380 | 'Sumter': {'pop': 93420, 'tracts': 19}, 381 | 'Suwannee': {'pop': 41551, 'tracts': 7}, 382 | 'Taylor': {'pop': 22570, 'tracts': 4}, 383 | 'Union': {'pop': 15535, 'tracts': 3}, 384 | 'Volusia': {'pop': 494593, 'tracts': 113}, 385 | 'Wakulla': {'pop': 30776, 'tracts': 4}, 386 | 'Walton': {'pop': 55043, 'tracts': 11}, 387 | 'Washington': {'pop': 24896, 'tracts': 7}}, 388 | 'GA': {'Appling': {'pop': 18236, 'tracts': 5}, 389 | 'Atkinson': {'pop': 8375, 'tracts': 3}, 390 | 'Bacon': {'pop': 11096, 'tracts': 3}, 391 | 'Baker': {'pop': 3451, 'tracts': 2}, 392 | 'Baldwin': {'pop': 45720, 'tracts': 9}, 393 | 'Banks': {'pop': 18395, 'tracts': 4}, 394 | 'Barrow': {'pop': 69367, 'tracts': 18}, 395 | 'Bartow': {'pop': 100157, 'tracts': 15}, 396 | 'Ben Hill': {'pop': 17634, 'tracts': 5}, 397 | 'Berrien': {'pop': 19286, 'tracts': 6}, 398 | 'Bibb': {'pop': 155547, 'tracts': 44}, 399 | 'Bleckley': {'pop': 13063, 'tracts': 3}, 400 | 'Brantley': {'pop': 18411, 'tracts': 3}, 401 | 'Brooks': {'pop': 16243, 'tracts': 5}, 402 | 'Bryan': {'pop': 30233, 'tracts': 7}, 403 | 'Bulloch': {'pop': 70217, 'tracts': 12}, 404 | 'Burke': {'pop': 23316, 'tracts': 6}, 405 | 'Butts': {'pop': 23655, 'tracts': 3}, 406 | 'Calhoun': {'pop': 6694, 'tracts': 2}, 407 | 'Camden': {'pop': 50513, 'tracts': 10}, 408 | 'Candler': {'pop': 10998, 'tracts': 3}, 409 | 'Carroll': {'pop': 110527, 'tracts': 17}, 410 | 'Catoosa': {'pop': 63942, 'tracts': 11}, 411 | 'Charlton': {'pop': 12171, 'tracts': 2}, 412 | 'Chatham': {'pop': 265128, 'tracts': 72}, 413 | 'Chattahoochee': {'pop': 11267, 'tracts': 5}, 414 | 'Chattooga': {'pop': 26015, 'tracts': 6}, 415 | 'Cherokee': {'pop': 214346, 'tracts': 26}, 416 | 'Clarke': {'pop': 116714, 'tracts': 30}, 417 | 'Clay': {'pop': 3183, 'tracts': 1}, 418 | 'Clayton': {'pop': 259424, 'tracts': 50}, 419 | 'Clinch': {'pop': 6798, 'tracts': 2}, 420 | 'Cobb': {'pop': 688078, 'tracts': 120}, 421 | 'Coffee': {'pop': 42356, 'tracts': 9}, 422 | 'Colquitt': {'pop': 45498, 'tracts': 10}, 423 | 'Columbia': {'pop': 124053, 'tracts': 20}, 424 | 'Cook': {'pop': 17212, 'tracts': 4}, 425 | 'Coweta': {'pop': 127317, 'tracts': 20}, 426 | 'Crawford': {'pop': 12630, 'tracts': 3}, 427 | 'Crisp': {'pop': 23439, 'tracts': 6}, 428 | 'Dade': {'pop': 16633, 'tracts': 4}, 429 | 'Dawson': {'pop': 22330, 'tracts': 3}, 430 | 'DeKalb': {'pop': 691893, 'tracts': 145}, 431 | 'Decatur': {'pop': 27842, 'tracts': 7}, 432 | 'Dodge': {'pop': 21796, 'tracts': 6}, 433 | 'Dooly': {'pop': 14918, 'tracts': 3}, 434 | 'Dougherty': {'pop': 94565, 'tracts': 27}, 435 | 'Douglas': {'pop': 132403, 'tracts': 20}, 436 | 'Early': {'pop': 11008, 'tracts': 5}, 437 | 'Echols': {'pop': 4034, 'tracts': 2}, 438 | 'Effingham': {'pop': 52250, 'tracts': 10}, 439 | 'Elbert': {'pop': 20166, 'tracts': 5}, 440 | 'Emanuel': {'pop': 22598, 'tracts': 6}, 441 | 'Evans': {'pop': 11000, 'tracts': 3}, 442 | 'Fannin': {'pop': 23682, 'tracts': 5}, 443 | 'Fayette': {'pop': 106567, 'tracts': 20}, 444 | 'Floyd': {'pop': 96317, 'tracts': 20}, 445 | 'Forsyth': {'pop': 175511, 'tracts': 45}, 446 | 'Franklin': {'pop': 22084, 'tracts': 5}, 447 | 'Fulton': {'pop': 920581, 'tracts': 204}, 448 | 'Gilmer': {'pop': 28292, 'tracts': 5}, 449 | 'Glascock': {'pop': 3082, 'tracts': 1}, 450 | 'Glynn': {'pop': 79626, 'tracts': 15}, 451 | 'Gordon': {'pop': 55186, 'tracts': 9}, 452 | 'Grady': {'pop': 25011, 'tracts': 6}, 453 | 'Greene': {'pop': 15994, 'tracts': 7}, 454 | 'Gwinnett': {'pop': 805321, 'tracts': 113}, 455 | 'Habersham': {'pop': 43041, 'tracts': 8}, 456 | 'Hall': {'pop': 179684, 'tracts': 36}, 457 | 'Hancock': {'pop': 9429, 'tracts': 2}, 458 | 'Haralson': {'pop': 28780, 'tracts': 5}, 459 | 'Harris': {'pop': 32024, 'tracts': 5}, 460 | 'Hart': {'pop': 25213, 'tracts': 5}, 461 | 'Heard': {'pop': 11834, 'tracts': 3}, 462 | 'Henry': {'pop': 203922, 'tracts': 25}, 463 | 'Houston': {'pop': 139900, 'tracts': 23}, 464 | 'Irwin': {'pop': 9538, 'tracts': 2}, 465 | 'Jackson': {'pop': 60485, 'tracts': 11}, 466 | 'Jasper': {'pop': 13900, 'tracts': 3}, 467 | 'Jeff Davis': {'pop': 15068, 'tracts': 3}, 468 | 'Jefferson': {'pop': 16930, 'tracts': 4}, 469 | 'Jenkins': {'pop': 8340, 'tracts': 2}, 470 | 'Johnson': {'pop': 9980, 'tracts': 3}, 471 | 'Jones': {'pop': 28669, 'tracts': 6}, 472 | 'Lamar': {'pop': 18317, 'tracts': 3}, 473 | 'Lanier': {'pop': 10078, 'tracts': 2}, 474 | 'Laurens': {'pop': 48434, 'tracts': 13}, 475 | 'Lee': {'pop': 28298, 'tracts': 5}, 476 | 'Liberty': {'pop': 63453, 'tracts': 14}, 477 | 'Lincoln': {'pop': 7996, 'tracts': 2}, 478 | 'Long': {'pop': 14464, 'tracts': 3}, 479 | 'Lowndes': {'pop': 109233, 'tracts': 25}, 480 | 'Lumpkin': {'pop': 29966, 'tracts': 4}, 481 | 'Macon': {'pop': 14740, 'tracts': 4}, 482 | 'Madison': {'pop': 28120, 'tracts': 6}, 483 | 'Marion': {'pop': 8742, 'tracts': 2}, 484 | 'McDuffie': {'pop': 21875, 'tracts': 5}, 485 | 'McIntosh': {'pop': 14333, 'tracts': 4}, 486 | 'Meriwether': {'pop': 21992, 'tracts': 4}, 487 | 'Miller': {'pop': 6125, 'tracts': 3}, 488 | 'Mitchell': {'pop': 23498, 'tracts': 5}, 489 | 'Monroe': {'pop': 26424, 'tracts': 5}, 490 | 'Montgomery': {'pop': 9123, 'tracts': 3}, 491 | 'Morgan': {'pop': 17868, 'tracts': 5}, 492 | 'Murray': {'pop': 39628, 'tracts': 8}, 493 | 'Muscogee': {'pop': 189885, 'tracts': 53}, 494 | 'Newton': {'pop': 99958, 'tracts': 13}, 495 | 'Oconee': {'pop': 32808, 'tracts': 6}, 496 | 'Oglethorpe': {'pop': 14899, 'tracts': 4}, 497 | 'Paulding': {'pop': 142324, 'tracts': 19}, 498 | 'Peach': {'pop': 27695, 'tracts': 6}, 499 | 'Pickens': {'pop': 29431, 'tracts': 6}, 500 | 'Pierce': {'pop': 18758, 'tracts': 4}, 501 | 'Pike': {'pop': 17869, 'tracts': 4}, 502 | 'Polk': {'pop': 41475, 'tracts': 7}, 503 | 'Pulaski': {'pop': 12010, 'tracts': 3}, 504 | 'Putnam': {'pop': 21218, 'tracts': 5}, 505 | 'Quitman': {'pop': 2513, 'tracts': 1}, 506 | 'Rabun': {'pop': 16276, 'tracts': 5}, 507 | 'Randolph': {'pop': 7719, 'tracts': 2}, 508 | 'Richmond': {'pop': 200549, 'tracts': 47}, 509 | 'Rockdale': {'pop': 85215, 'tracts': 15}, 510 | 'Schley': {'pop': 5010, 'tracts': 2}, 511 | 'Screven': {'pop': 14593, 'tracts': 5}, 512 | 'Seminole': {'pop': 8729, 'tracts': 3}, 513 | 'Spalding': {'pop': 64073, 'tracts': 12}, 514 | 'Stephens': {'pop': 26175, 'tracts': 5}, 515 | 'Stewart': {'pop': 6058, 'tracts': 2}, 516 | 'Sumter': {'pop': 32819, 'tracts': 8}, 517 | 'Talbot': {'pop': 6865, 'tracts': 3}, 518 | 'Taliaferro': {'pop': 1717, 'tracts': 1}, 519 | 'Tattnall': {'pop': 25520, 'tracts': 5}, 520 | 'Taylor': {'pop': 8906, 'tracts': 3}, 521 | 'Telfair': {'pop': 16500, 'tracts': 3}, 522 | 'Terrell': {'pop': 9315, 'tracts': 4}, 523 | 'Thomas': {'pop': 44720, 'tracts': 11}, 524 | 'Tift': {'pop': 40118, 'tracts': 9}, 525 | 'Toombs': {'pop': 27223, 'tracts': 6}, 526 | 'Towns': {'pop': 10471, 'tracts': 3}, 527 | 'Treutlen': {'pop': 6885, 'tracts': 2}, 528 | 'Troup': {'pop': 67044, 'tracts': 14}, 529 | 'Turner': {'pop': 8930, 'tracts': 2}, 530 | 'Twiggs': {'pop': 9023, 'tracts': 2}, 531 | 'Union': {'pop': 21356, 'tracts': 6}, 532 | 'Upson': {'pop': 27153, 'tracts': 7}, 533 | 'Walker': {'pop': 68756, 'tracts': 13}, 534 | 'Walton': {'pop': 83768, 'tracts': 15}, 535 | 'Ware': {'pop': 36312, 'tracts': 9}, 536 | 'Warren': {'pop': 5834, 'tracts': 2}, 537 | 'Washington': {'pop': 21187, 'tracts': 5}, 538 | 'Wayne': {'pop': 30099, 'tracts': 6}, 539 | 'Webster': {'pop': 2799, 'tracts': 2}, 540 | 'Wheeler': {'pop': 7421, 'tracts': 2}, 541 | 'White': {'pop': 27144, 'tracts': 5}, 542 | 'Whitfield': {'pop': 102599, 'tracts': 18}, 543 | 'Wilcox': {'pop': 9255, 'tracts': 4}, 544 | 'Wilkes': {'pop': 10593, 'tracts': 4}, 545 | 'Wilkinson': {'pop': 9563, 'tracts': 3}, 546 | 'Worth': {'pop': 21679, 'tracts': 5}}, 547 | 'HI': {'Hawaii': {'pop': 185079, 'tracts': 34}, 548 | 'Honolulu': {'pop': 953207, 'tracts': 244}, 549 | 'Kalawao': {'pop': 90, 'tracts': 1}, 550 | 'Kauai': {'pop': 67091, 'tracts': 16}, 551 | 'Maui': {'pop': 154834, 'tracts': 37}}, 552 | 'IA': {'Adair': {'pop': 7682, 'tracts': 3}, 553 | 'Adams': {'pop': 4029, 'tracts': 2}, 554 | 'Allamakee': {'pop': 14330, 'tracts': 5}, 555 | 'Appanoose': {'pop': 12887, 'tracts': 5}, 556 | 'Audubon': {'pop': 6119, 'tracts': 3}, 557 | 'Benton': {'pop': 26076, 'tracts': 7}, 558 | 'Black Hawk': {'pop': 131090, 'tracts': 38}, 559 | 'Boone': {'pop': 26306, 'tracts': 7}, 560 | 'Bremer': {'pop': 24276, 'tracts': 8}, 561 | 'Buchanan': {'pop': 20958, 'tracts': 6}, 562 | 'Buena Vista': {'pop': 20260, 'tracts': 6}, 563 | 'Butler': {'pop': 14867, 'tracts': 5}, 564 | 'Calhoun': {'pop': 9670, 'tracts': 4}, 565 | 'Carroll': {'pop': 20816, 'tracts': 6}, 566 | 'Cass': {'pop': 13956, 'tracts': 5}, 567 | 'Cedar': {'pop': 18499, 'tracts': 5}, 568 | 'Cerro Gordo': {'pop': 44151, 'tracts': 11}, 569 | 'Cherokee': {'pop': 12072, 'tracts': 4}, 570 | 'Chickasaw': {'pop': 12439, 'tracts': 4}, 571 | 'Clarke': {'pop': 9286, 'tracts': 3}, 572 | 'Clay': {'pop': 16667, 'tracts': 4}, 573 | 'Clayton': {'pop': 18129, 'tracts': 6}, 574 | 'Clinton': {'pop': 49116, 'tracts': 12}, 575 | 'Crawford': {'pop': 17096, 'tracts': 5}, 576 | 'Dallas': {'pop': 66135, 'tracts': 15}, 577 | 'Davis': {'pop': 8753, 'tracts': 2}, 578 | 'Decatur': {'pop': 8457, 'tracts': 3}, 579 | 'Delaware': {'pop': 17764, 'tracts': 4}, 580 | 'Des Moines': {'pop': 40325, 'tracts': 11}, 581 | 'Dickinson': {'pop': 16667, 'tracts': 5}, 582 | 'Dubuque': {'pop': 93653, 'tracts': 26}, 583 | 'Emmet': {'pop': 10302, 'tracts': 4}, 584 | 'Fayette': {'pop': 20880, 'tracts': 7}, 585 | 'Floyd': {'pop': 16303, 'tracts': 5}, 586 | 'Franklin': {'pop': 10680, 'tracts': 3}, 587 | 'Fremont': {'pop': 7441, 'tracts': 3}, 588 | 'Greene': {'pop': 9336, 'tracts': 4}, 589 | 'Grundy': {'pop': 12453, 'tracts': 4}, 590 | 'Guthrie': {'pop': 10954, 'tracts': 3}, 591 | 'Hamilton': {'pop': 15673, 'tracts': 5}, 592 | 'Hancock': {'pop': 11341, 'tracts': 4}, 593 | 'Hardin': {'pop': 17534, 'tracts': 6}, 594 | 'Harrison': {'pop': 14928, 'tracts': 5}, 595 | 'Henry': {'pop': 20145, 'tracts': 5}, 596 | 'Howard': {'pop': 9566, 'tracts': 3}, 597 | 'Humboldt': {'pop': 9815, 'tracts': 4}, 598 | 'Ida': {'pop': 7089, 'tracts': 3}, 599 | 'Iowa': {'pop': 16355, 'tracts': 4}, 600 | 'Jackson': {'pop': 19848, 'tracts': 6}, 601 | 'Jasper': {'pop': 36842, 'tracts': 9}, 602 | 'Jefferson': {'pop': 16843, 'tracts': 4}, 603 | 'Johnson': {'pop': 130882, 'tracts': 24}, 604 | 'Jones': {'pop': 20638, 'tracts': 5}, 605 | 'Keokuk': {'pop': 10511, 'tracts': 4}, 606 | 'Kossuth': {'pop': 15543, 'tracts': 6}, 607 | 'Lee': {'pop': 35862, 'tracts': 11}, 608 | 'Linn': {'pop': 211226, 'tracts': 45}, 609 | 'Louisa': {'pop': 11387, 'tracts': 3}, 610 | 'Lucas': {'pop': 8898, 'tracts': 4}, 611 | 'Lyon': {'pop': 11581, 'tracts': 3}, 612 | 'Madison': {'pop': 15679, 'tracts': 3}, 613 | 'Mahaska': {'pop': 22381, 'tracts': 7}, 614 | 'Marion': {'pop': 33309, 'tracts': 8}, 615 | 'Marshall': {'pop': 40648, 'tracts': 10}, 616 | 'Mills': {'pop': 15059, 'tracts': 5}, 617 | 'Mitchell': {'pop': 10776, 'tracts': 3}, 618 | 'Monona': {'pop': 9243, 'tracts': 4}, 619 | 'Monroe': {'pop': 7970, 'tracts': 3}, 620 | 'Montgomery': {'pop': 10740, 'tracts': 4}, 621 | 'Muscatine': {'pop': 42745, 'tracts': 10}, 622 | "O'Brien": {'pop': 14398, 'tracts': 4}, 623 | 'Osceola': {'pop': 6462, 'tracts': 2}, 624 | 'Page': {'pop': 15932, 'tracts': 6}, 625 | 'Palo Alto': {'pop': 9421, 'tracts': 4}, 626 | 'Plymouth': {'pop': 24986, 'tracts': 6}, 627 | 'Pocahontas': {'pop': 7310, 'tracts': 3}, 628 | 'Polk': {'pop': 430640, 'tracts': 98}, 629 | 'Pottawattamie': {'pop': 93158, 'tracts': 30}, 630 | 'Poweshiek': {'pop': 18914, 'tracts': 5}, 631 | 'Ringgold': {'pop': 5131, 'tracts': 2}, 632 | 'Sac': {'pop': 10350, 'tracts': 4}, 633 | 'Scott': {'pop': 165224, 'tracts': 47}, 634 | 'Shelby': {'pop': 12167, 'tracts': 4}, 635 | 'Sioux': {'pop': 33704, 'tracts': 7}, 636 | 'Story': {'pop': 89542, 'tracts': 20}, 637 | 'Tama': {'pop': 17767, 'tracts': 6}, 638 | 'Taylor': {'pop': 6317, 'tracts': 3}, 639 | 'Union': {'pop': 12534, 'tracts': 4}, 640 | 'Van Buren': {'pop': 7570, 'tracts': 2}, 641 | 'Wapello': {'pop': 35625, 'tracts': 11}, 642 | 'Warren': {'pop': 46225, 'tracts': 12}, 643 | 'Washington': {'pop': 21704, 'tracts': 5}, 644 | 'Wayne': {'pop': 6403, 'tracts': 3}, 645 | 'Webster': {'pop': 38013, 'tracts': 12}, 646 | 'Winnebago': {'pop': 10866, 'tracts': 3}, 647 | 'Winneshiek': {'pop': 21056, 'tracts': 5}, 648 | 'Woodbury': {'pop': 102172, 'tracts': 26}, 649 | 'Worth': {'pop': 7598, 'tracts': 3}, 650 | 'Wright': {'pop': 13229, 'tracts': 5}}, 651 | 'ID': {'Ada': {'pop': 392365, 'tracts': 59}, 652 | 'Adams': {'pop': 3976, 'tracts': 2}, 653 | 'Bannock': {'pop': 82839, 'tracts': 22}, 654 | 'Bear Lake': {'pop': 5986, 'tracts': 2}, 655 | 'Benewah': {'pop': 9285, 'tracts': 2}, 656 | 'Bingham': {'pop': 45607, 'tracts': 8}, 657 | 'Blaine': {'pop': 21376, 'tracts': 4}, 658 | 'Boise': {'pop': 7028, 'tracts': 1}, 659 | 'Bonner': {'pop': 40877, 'tracts': 9}, 660 | 'Bonneville': {'pop': 104234, 'tracts': 21}, 661 | 'Boundary': {'pop': 10972, 'tracts': 2}, 662 | 'Butte': {'pop': 2891, 'tracts': 1}, 663 | 'Camas': {'pop': 1117, 'tracts': 1}, 664 | 'Canyon': {'pop': 188923, 'tracts': 29}, 665 | 'Caribou': {'pop': 6963, 'tracts': 2}, 666 | 'Cassia': {'pop': 22952, 'tracts': 6}, 667 | 'Clark': {'pop': 982, 'tracts': 1}, 668 | 'Clearwater': {'pop': 8761, 'tracts': 2}, 669 | 'Custer': {'pop': 4368, 'tracts': 1}, 670 | 'Elmore': {'pop': 27038, 'tracts': 5}, 671 | 'Franklin': {'pop': 12786, 'tracts': 2}, 672 | 'Fremont': {'pop': 13242, 'tracts': 3}, 673 | 'Gem': {'pop': 16719, 'tracts': 3}, 674 | 'Gooding': {'pop': 15464, 'tracts': 2}, 675 | 'Idaho': {'pop': 16267, 'tracts': 5}, 676 | 'Jefferson': {'pop': 26140, 'tracts': 4}, 677 | 'Jerome': {'pop': 22374, 'tracts': 5}, 678 | 'Kootenai': {'pop': 138494, 'tracts': 25}, 679 | 'Latah': {'pop': 37244, 'tracts': 7}, 680 | 'Lemhi': {'pop': 7936, 'tracts': 3}, 681 | 'Lewis': {'pop': 3821, 'tracts': 3}, 682 | 'Lincoln': {'pop': 5208, 'tracts': 1}, 683 | 'Madison': {'pop': 37536, 'tracts': 6}, 684 | 'Minidoka': {'pop': 20069, 'tracts': 5}, 685 | 'Nez Perce': {'pop': 39265, 'tracts': 10}, 686 | 'Oneida': {'pop': 4286, 'tracts': 1}, 687 | 'Owyhee': {'pop': 11526, 'tracts': 3}, 688 | 'Payette': {'pop': 22623, 'tracts': 4}, 689 | 'Power': {'pop': 7817, 'tracts': 2}, 690 | 'Shoshone': {'pop': 12765, 'tracts': 3}, 691 | 'Teton': {'pop': 10170, 'tracts': 1}, 692 | 'Twin Falls': {'pop': 77230, 'tracts': 14}, 693 | 'Valley': {'pop': 9862, 'tracts': 3}, 694 | 'Washington': {'pop': 10198, 'tracts': 3}}, 695 | 'IL': {'Adams': {'pop': 67103, 'tracts': 18}, 696 | 'Alexander': {'pop': 8238, 'tracts': 4}, 697 | 'Bond': {'pop': 17768, 'tracts': 4}, 698 | 'Boone': {'pop': 54165, 'tracts': 7}, 699 | 'Brown': {'pop': 6937, 'tracts': 2}, 700 | 'Bureau': {'pop': 34978, 'tracts': 10}, 701 | 'Calhoun': {'pop': 5089, 'tracts': 2}, 702 | 'Carroll': {'pop': 15387, 'tracts': 6}, 703 | 'Cass': {'pop': 13642, 'tracts': 5}, 704 | 'Champaign': {'pop': 201081, 'tracts': 43}, 705 | 'Christian': {'pop': 34800, 'tracts': 10}, 706 | 'Clark': {'pop': 16335, 'tracts': 4}, 707 | 'Clay': {'pop': 13815, 'tracts': 4}, 708 | 'Clinton': {'pop': 37762, 'tracts': 8}, 709 | 'Coles': {'pop': 53873, 'tracts': 12}, 710 | 'Cook': {'pop': 5194675, 'tracts': 1318}, 711 | 'Crawford': {'pop': 19817, 'tracts': 6}, 712 | 'Cumberland': {'pop': 11048, 'tracts': 3}, 713 | 'De Witt': {'pop': 16561, 'tracts': 5}, 714 | 'DeKalb': {'pop': 105160, 'tracts': 21}, 715 | 'Douglas': {'pop': 19980, 'tracts': 5}, 716 | 'DuPage': {'pop': 916924, 'tracts': 216}, 717 | 'Edgar': {'pop': 18576, 'tracts': 5}, 718 | 'Edwards': {'pop': 6721, 'tracts': 3}, 719 | 'Effingham': {'pop': 34242, 'tracts': 8}, 720 | 'Fayette': {'pop': 22140, 'tracts': 7}, 721 | 'Ford': {'pop': 14081, 'tracts': 5}, 722 | 'Franklin': {'pop': 39561, 'tracts': 12}, 723 | 'Fulton': {'pop': 37069, 'tracts': 12}, 724 | 'Gallatin': {'pop': 5589, 'tracts': 2}, 725 | 'Greene': {'pop': 13886, 'tracts': 5}, 726 | 'Grundy': {'pop': 50063, 'tracts': 10}, 727 | 'Hamilton': {'pop': 8457, 'tracts': 3}, 728 | 'Hancock': {'pop': 19104, 'tracts': 7}, 729 | 'Hardin': {'pop': 4320, 'tracts': 2}, 730 | 'Henderson': {'pop': 7331, 'tracts': 3}, 731 | 'Henry': {'pop': 50486, 'tracts': 13}, 732 | 'Iroquois': {'pop': 29718, 'tracts': 9}, 733 | 'Jackson': {'pop': 60218, 'tracts': 14}, 734 | 'Jasper': {'pop': 9698, 'tracts': 3}, 735 | 'Jefferson': {'pop': 38827, 'tracts': 11}, 736 | 'Jersey': {'pop': 22985, 'tracts': 6}, 737 | 'Jo Daviess': {'pop': 22678, 'tracts': 6}, 738 | 'Johnson': {'pop': 12582, 'tracts': 4}, 739 | 'Kane': {'pop': 515269, 'tracts': 82}, 740 | 'Kankakee': {'pop': 113449, 'tracts': 29}, 741 | 'Kendall': {'pop': 114736, 'tracts': 10}, 742 | 'Knox': {'pop': 52919, 'tracts': 16}, 743 | 'La Salle': {'pop': 113924, 'tracts': 28}, 744 | 'Lake': {'pop': 703462, 'tracts': 153}, 745 | 'Lawrence': {'pop': 16833, 'tracts': 5}, 746 | 'Lee': {'pop': 36031, 'tracts': 9}, 747 | 'Livingston': {'pop': 38950, 'tracts': 10}, 748 | 'Logan': {'pop': 30305, 'tracts': 8}, 749 | 'Macon': {'pop': 110768, 'tracts': 34}, 750 | 'Macoupin': {'pop': 47765, 'tracts': 13}, 751 | 'Madison': {'pop': 269282, 'tracts': 61}, 752 | 'Marion': {'pop': 39437, 'tracts': 12}, 753 | 'Marshall': {'pop': 12640, 'tracts': 5}, 754 | 'Mason': {'pop': 14666, 'tracts': 6}, 755 | 'Massac': {'pop': 15429, 'tracts': 4}, 756 | 'McDonough': {'pop': 32612, 'tracts': 10}, 757 | 'McHenry': {'pop': 308760, 'tracts': 52}, 758 | 'McLean': {'pop': 169572, 'tracts': 41}, 759 | 'Menard': {'pop': 12705, 'tracts': 3}, 760 | 'Mercer': {'pop': 16434, 'tracts': 4}, 761 | 'Monroe': {'pop': 32957, 'tracts': 6}, 762 | 'Montgomery': {'pop': 30104, 'tracts': 8}, 763 | 'Morgan': {'pop': 35547, 'tracts': 10}, 764 | 'Moultrie': {'pop': 14846, 'tracts': 4}, 765 | 'Ogle': {'pop': 53497, 'tracts': 11}, 766 | 'Peoria': {'pop': 186494, 'tracts': 48}, 767 | 'Perry': {'pop': 22350, 'tracts': 6}, 768 | 'Piatt': {'pop': 16729, 'tracts': 4}, 769 | 'Pike': {'pop': 16430, 'tracts': 5}, 770 | 'Pope': {'pop': 4470, 'tracts': 2}, 771 | 'Pulaski': {'pop': 6161, 'tracts': 2}, 772 | 'Putnam': {'pop': 6006, 'tracts': 2}, 773 | 'Randolph': {'pop': 33476, 'tracts': 9}, 774 | 'Richland': {'pop': 16233, 'tracts': 5}, 775 | 'Rock Island': {'pop': 147546, 'tracts': 40}, 776 | 'Saline': {'pop': 24913, 'tracts': 9}, 777 | 'Sangamon': {'pop': 197465, 'tracts': 53}, 778 | 'Schuyler': {'pop': 7544, 'tracts': 3}, 779 | 'Scott': {'pop': 5355, 'tracts': 2}, 780 | 'Shelby': {'pop': 22363, 'tracts': 6}, 781 | 'St. Clair': {'pop': 270056, 'tracts': 60}, 782 | 'Stark': {'pop': 5994, 'tracts': 2}, 783 | 'Stephenson': {'pop': 47711, 'tracts': 13}, 784 | 'Tazewell': {'pop': 135394, 'tracts': 30}, 785 | 'Union': {'pop': 17808, 'tracts': 5}, 786 | 'Vermilion': {'pop': 81625, 'tracts': 24}, 787 | 'Wabash': {'pop': 11947, 'tracts': 4}, 788 | 'Warren': {'pop': 17707, 'tracts': 5}, 789 | 'Washington': {'pop': 14716, 'tracts': 4}, 790 | 'Wayne': {'pop': 16760, 'tracts': 5}, 791 | 'White': {'pop': 14665, 'tracts': 5}, 792 | 'Whiteside': {'pop': 58498, 'tracts': 18}, 793 | 'Will': {'pop': 677560, 'tracts': 152}, 794 | 'Williamson': {'pop': 66357, 'tracts': 15}, 795 | 'Winnebago': {'pop': 295266, 'tracts': 77}, 796 | 'Woodford': {'pop': 38664, 'tracts': 9}}, 797 | 'IN': {'Adams': {'pop': 34387, 'tracts': 7}, 798 | 'Allen': {'pop': 355329, 'tracts': 96}, 799 | 'Bartholomew': {'pop': 76794, 'tracts': 15}, 800 | 'Benton': {'pop': 8854, 'tracts': 3}, 801 | 'Blackford': {'pop': 12766, 'tracts': 4}, 802 | 'Boone': {'pop': 56640, 'tracts': 10}, 803 | 'Brown': {'pop': 15242, 'tracts': 4}, 804 | 'Carroll': {'pop': 20155, 'tracts': 7}, 805 | 'Cass': {'pop': 38966, 'tracts': 11}, 806 | 'Clark': {'pop': 110232, 'tracts': 26}, 807 | 'Clay': {'pop': 26890, 'tracts': 6}, 808 | 'Clinton': {'pop': 33224, 'tracts': 8}, 809 | 'Crawford': {'pop': 10713, 'tracts': 3}, 810 | 'Daviess': {'pop': 31648, 'tracts': 7}, 811 | 'DeKalb': {'pop': 42223, 'tracts': 9}, 812 | 'Dearborn': {'pop': 50047, 'tracts': 10}, 813 | 'Decatur': {'pop': 25740, 'tracts': 6}, 814 | 'Delaware': {'pop': 117671, 'tracts': 30}, 815 | 'Dubois': {'pop': 41889, 'tracts': 7}, 816 | 'Elkhart': {'pop': 197559, 'tracts': 36}, 817 | 'Fayette': {'pop': 24277, 'tracts': 7}, 818 | 'Floyd': {'pop': 74578, 'tracts': 20}, 819 | 'Fountain': {'pop': 17240, 'tracts': 5}, 820 | 'Franklin': {'pop': 23087, 'tracts': 5}, 821 | 'Fulton': {'pop': 20836, 'tracts': 6}, 822 | 'Gibson': {'pop': 33503, 'tracts': 7}, 823 | 'Grant': {'pop': 70061, 'tracts': 16}, 824 | 'Greene': {'pop': 33165, 'tracts': 9}, 825 | 'Hamilton': {'pop': 274569, 'tracts': 39}, 826 | 'Hancock': {'pop': 70002, 'tracts': 10}, 827 | 'Harrison': {'pop': 39364, 'tracts': 6}, 828 | 'Hendricks': {'pop': 145448, 'tracts': 21}, 829 | 'Henry': {'pop': 49462, 'tracts': 13}, 830 | 'Howard': {'pop': 82752, 'tracts': 20}, 831 | 'Huntington': {'pop': 37124, 'tracts': 9}, 832 | 'Jackson': {'pop': 42376, 'tracts': 10}, 833 | 'Jasper': {'pop': 33478, 'tracts': 8}, 834 | 'Jay': {'pop': 21253, 'tracts': 7}, 835 | 'Jefferson': {'pop': 32428, 'tracts': 7}, 836 | 'Jennings': {'pop': 28525, 'tracts': 6}, 837 | 'Johnson': {'pop': 139654, 'tracts': 22}, 838 | 'Knox': {'pop': 38440, 'tracts': 10}, 839 | 'Kosciusko': {'pop': 77358, 'tracts': 19}, 840 | 'LaGrange': {'pop': 37128, 'tracts': 8}, 841 | 'LaPorte': {'pop': 111467, 'tracts': 28}, 842 | 'Lake': {'pop': 496005, 'tracts': 117}, 843 | 'Lawrence': {'pop': 46134, 'tracts': 10}, 844 | 'Madison': {'pop': 131636, 'tracts': 37}, 845 | 'Marion': {'pop': 903393, 'tracts': 224}, 846 | 'Marshall': {'pop': 47051, 'tracts': 12}, 847 | 'Martin': {'pop': 10334, 'tracts': 3}, 848 | 'Miami': {'pop': 36903, 'tracts': 10}, 849 | 'Monroe': {'pop': 137974, 'tracts': 31}, 850 | 'Montgomery': {'pop': 38124, 'tracts': 9}, 851 | 'Morgan': {'pop': 68894, 'tracts': 13}, 852 | 'Newton': {'pop': 14244, 'tracts': 4}, 853 | 'Noble': {'pop': 47536, 'tracts': 10}, 854 | 'Ohio': {'pop': 6128, 'tracts': 2}, 855 | 'Orange': {'pop': 19840, 'tracts': 6}, 856 | 'Owen': {'pop': 21575, 'tracts': 5}, 857 | 'Parke': {'pop': 17339, 'tracts': 4}, 858 | 'Perry': {'pop': 19338, 'tracts': 5}, 859 | 'Pike': {'pop': 12845, 'tracts': 4}, 860 | 'Porter': {'pop': 164343, 'tracts': 32}, 861 | 'Posey': {'pop': 25910, 'tracts': 7}, 862 | 'Pulaski': {'pop': 13402, 'tracts': 4}, 863 | 'Putnam': {'pop': 37963, 'tracts': 7}, 864 | 'Randolph': {'pop': 26171, 'tracts': 8}, 865 | 'Ripley': {'pop': 28818, 'tracts': 6}, 866 | 'Rush': {'pop': 17392, 'tracts': 5}, 867 | 'Scott': {'pop': 24181, 'tracts': 5}, 868 | 'Shelby': {'pop': 44436, 'tracts': 10}, 869 | 'Spencer': {'pop': 20952, 'tracts': 5}, 870 | 'St. Joseph': {'pop': 266931, 'tracts': 75}, 871 | 'Starke': {'pop': 23363, 'tracts': 7}, 872 | 'Steuben': {'pop': 34185, 'tracts': 9}, 873 | 'Sullivan': {'pop': 21475, 'tracts': 5}, 874 | 'Switzerland': {'pop': 10613, 'tracts': 3}, 875 | 'Tippecanoe': {'pop': 172780, 'tracts': 37}, 876 | 'Tipton': {'pop': 15936, 'tracts': 4}, 877 | 'Union': {'pop': 7516, 'tracts': 2}, 878 | 'Vanderburgh': {'pop': 179703, 'tracts': 49}, 879 | 'Vermillion': {'pop': 16212, 'tracts': 5}, 880 | 'Vigo': {'pop': 107848, 'tracts': 28}, 881 | 'Wabash': {'pop': 32888, 'tracts': 8}, 882 | 'Warren': {'pop': 8508, 'tracts': 2}, 883 | 'Warrick': {'pop': 59689, 'tracts': 11}, 884 | 'Washington': {'pop': 28262, 'tracts': 6}, 885 | 'Wayne': {'pop': 68917, 'tracts': 17}, 886 | 'Wells': {'pop': 27636, 'tracts': 7}, 887 | 'White': {'pop': 24643, 'tracts': 8}, 888 | 'Whitley': {'pop': 33292, 'tracts': 7}}, 889 | 'KS': {'Allen': {'pop': 13371, 'tracts': 5}, 890 | 'Anderson': {'pop': 8102, 'tracts': 2}, 891 | 'Atchison': {'pop': 16924, 'tracts': 4}, 892 | 'Barber': {'pop': 4861, 'tracts': 2}, 893 | 'Barton': {'pop': 27674, 'tracts': 8}, 894 | 'Bourbon': {'pop': 15173, 'tracts': 5}, 895 | 'Brown': {'pop': 9984, 'tracts': 3}, 896 | 'Butler': {'pop': 65880, 'tracts': 13}, 897 | 'Chase': {'pop': 2790, 'tracts': 1}, 898 | 'Chautauqua': {'pop': 3669, 'tracts': 1}, 899 | 'Cherokee': {'pop': 21603, 'tracts': 6}, 900 | 'Cheyenne': {'pop': 2726, 'tracts': 1}, 901 | 'Clark': {'pop': 2215, 'tracts': 1}, 902 | 'Clay': {'pop': 8535, 'tracts': 2}, 903 | 'Cloud': {'pop': 9533, 'tracts': 4}, 904 | 'Coffey': {'pop': 8601, 'tracts': 3}, 905 | 'Comanche': {'pop': 1891, 'tracts': 1}, 906 | 'Cowley': {'pop': 36311, 'tracts': 11}, 907 | 'Crawford': {'pop': 39134, 'tracts': 11}, 908 | 'Decatur': {'pop': 2961, 'tracts': 2}, 909 | 'Dickinson': {'pop': 19754, 'tracts': 6}, 910 | 'Doniphan': {'pop': 7945, 'tracts': 3}, 911 | 'Douglas': {'pop': 110826, 'tracts': 22}, 912 | 'Edwards': {'pop': 3037, 'tracts': 2}, 913 | 'Elk': {'pop': 2882, 'tracts': 1}, 914 | 'Ellis': {'pop': 28452, 'tracts': 6}, 915 | 'Ellsworth': {'pop': 6497, 'tracts': 2}, 916 | 'Finney': {'pop': 36776, 'tracts': 12}, 917 | 'Ford': {'pop': 33848, 'tracts': 7}, 918 | 'Franklin': {'pop': 25992, 'tracts': 5}, 919 | 'Geary': {'pop': 34362, 'tracts': 8}, 920 | 'Gove': {'pop': 2695, 'tracts': 2}, 921 | 'Graham': {'pop': 2597, 'tracts': 2}, 922 | 'Grant': {'pop': 7829, 'tracts': 2}, 923 | 'Gray': {'pop': 6006, 'tracts': 2}, 924 | 'Greeley': {'pop': 1247, 'tracts': 1}, 925 | 'Greenwood': {'pop': 6689, 'tracts': 3}, 926 | 'Hamilton': {'pop': 2690, 'tracts': 1}, 927 | 'Harper': {'pop': 6034, 'tracts': 3}, 928 | 'Harvey': {'pop': 34684, 'tracts': 6}, 929 | 'Haskell': {'pop': 4256, 'tracts': 1}, 930 | 'Hodgeman': {'pop': 1916, 'tracts': 1}, 931 | 'Jackson': {'pop': 13462, 'tracts': 3}, 932 | 'Jefferson': {'pop': 19126, 'tracts': 4}, 933 | 'Jewell': {'pop': 3077, 'tracts': 2}, 934 | 'Johnson': {'pop': 544179, 'tracts': 130}, 935 | 'Kearny': {'pop': 3977, 'tracts': 1}, 936 | 'Kingman': {'pop': 7858, 'tracts': 3}, 937 | 'Kiowa': {'pop': 2553, 'tracts': 1}, 938 | 'Labette': {'pop': 21607, 'tracts': 8}, 939 | 'Lane': {'pop': 1750, 'tracts': 1}, 940 | 'Leavenworth': {'pop': 76227, 'tracts': 16}, 941 | 'Lincoln': {'pop': 3241, 'tracts': 1}, 942 | 'Linn': {'pop': 9656, 'tracts': 2}, 943 | 'Logan': {'pop': 2756, 'tracts': 1}, 944 | 'Lyon': {'pop': 33690, 'tracts': 8}, 945 | 'Marion': {'pop': 12660, 'tracts': 4}, 946 | 'Marshall': {'pop': 10117, 'tracts': 4}, 947 | 'McPherson': {'pop': 29180, 'tracts': 7}, 948 | 'Meade': {'pop': 4575, 'tracts': 2}, 949 | 'Miami': {'pop': 32787, 'tracts': 8}, 950 | 'Mitchell': {'pop': 6373, 'tracts': 2}, 951 | 'Montgomery': {'pop': 35471, 'tracts': 13}, 952 | 'Morris': {'pop': 5923, 'tracts': 2}, 953 | 'Morton': {'pop': 3233, 'tracts': 1}, 954 | 'Nemaha': {'pop': 10178, 'tracts': 3}, 955 | 'Neosho': {'pop': 16512, 'tracts': 5}, 956 | 'Ness': {'pop': 3107, 'tracts': 2}, 957 | 'Norton': {'pop': 5671, 'tracts': 1}, 958 | 'Osage': {'pop': 16295, 'tracts': 5}, 959 | 'Osborne': {'pop': 3858, 'tracts': 1}, 960 | 'Ottawa': {'pop': 6091, 'tracts': 2}, 961 | 'Pawnee': {'pop': 6973, 'tracts': 2}, 962 | 'Phillips': {'pop': 5642, 'tracts': 3}, 963 | 'Pottawatomie': {'pop': 21604, 'tracts': 4}, 964 | 'Pratt': {'pop': 9656, 'tracts': 3}, 965 | 'Rawlins': {'pop': 2519, 'tracts': 1}, 966 | 'Reno': {'pop': 64511, 'tracts': 17}, 967 | 'Republic': {'pop': 4980, 'tracts': 3}, 968 | 'Rice': {'pop': 10083, 'tracts': 3}, 969 | 'Riley': {'pop': 71115, 'tracts': 14}, 970 | 'Rooks': {'pop': 5181, 'tracts': 2}, 971 | 'Rush': {'pop': 3307, 'tracts': 2}, 972 | 'Russell': {'pop': 6970, 'tracts': 2}, 973 | 'Saline': {'pop': 55606, 'tracts': 12}, 974 | 'Scott': {'pop': 4936, 'tracts': 1}, 975 | 'Sedgwick': {'pop': 498365, 'tracts': 124}, 976 | 'Seward': {'pop': 22952, 'tracts': 5}, 977 | 'Shawnee': {'pop': 177934, 'tracts': 43}, 978 | 'Sheridan': {'pop': 2556, 'tracts': 2}, 979 | 'Sherman': {'pop': 6010, 'tracts': 2}, 980 | 'Smith': {'pop': 3853, 'tracts': 2}, 981 | 'Stafford': {'pop': 4437, 'tracts': 2}, 982 | 'Stanton': {'pop': 2235, 'tracts': 1}, 983 | 'Stevens': {'pop': 5724, 'tracts': 2}, 984 | 'Sumner': {'pop': 24132, 'tracts': 6}, 985 | 'Thomas': {'pop': 7900, 'tracts': 2}, 986 | 'Trego': {'pop': 3001, 'tracts': 1}, 987 | 'Wabaunsee': {'pop': 7053, 'tracts': 2}, 988 | 'Wallace': {'pop': 1485, 'tracts': 1}, 989 | 'Washington': {'pop': 5799, 'tracts': 2}, 990 | 'Wichita': {'pop': 2234, 'tracts': 1}, 991 | 'Wilson': {'pop': 9409, 'tracts': 4}, 992 | 'Woodson': {'pop': 3309, 'tracts': 2}, 993 | 'Wyandotte': {'pop': 157505, 'tracts': 70}}, 994 | 'KY': {'Adair': {'pop': 18656, 'tracts': 7}, 995 | 'Allen': {'pop': 19956, 'tracts': 6}, 996 | 'Anderson': {'pop': 21421, 'tracts': 5}, 997 | 'Ballard': {'pop': 8249, 'tracts': 3}, 998 | 'Barren': {'pop': 42173, 'tracts': 10}, 999 | 'Bath': {'pop': 11591, 'tracts': 3}, 1000 | 'Bell': {'pop': 28691, 'tracts': 9}, 1001 | 'Boone': {'pop': 118811, 'tracts': 22}, 1002 | 'Bourbon': {'pop': 19985, 'tracts': 6}, 1003 | 'Boyd': {'pop': 49542, 'tracts': 13}, 1004 | 'Boyle': {'pop': 28432, 'tracts': 7}, 1005 | 'Bracken': {'pop': 8488, 'tracts': 3}, 1006 | 'Breathitt': {'pop': 13878, 'tracts': 7}, 1007 | 'Breckinridge': {'pop': 20059, 'tracts': 6}, 1008 | 'Bullitt': {'pop': 74319, 'tracts': 18}, 1009 | 'Butler': {'pop': 12690, 'tracts': 5}, 1010 | 'Caldwell': {'pop': 12984, 'tracts': 3}, 1011 | 'Calloway': {'pop': 37191, 'tracts': 9}, 1012 | 'Campbell': {'pop': 90336, 'tracts': 25}, 1013 | 'Carlisle': {'pop': 5104, 'tracts': 3}, 1014 | 'Carroll': {'pop': 10811, 'tracts': 3}, 1015 | 'Carter': {'pop': 27720, 'tracts': 7}, 1016 | 'Casey': {'pop': 15955, 'tracts': 5}, 1017 | 'Christian': {'pop': 73955, 'tracts': 19}, 1018 | 'Clark': {'pop': 35613, 'tracts': 10}, 1019 | 'Clay': {'pop': 21730, 'tracts': 6}, 1020 | 'Clinton': {'pop': 10272, 'tracts': 3}, 1021 | 'Crittenden': {'pop': 9315, 'tracts': 4}, 1022 | 'Cumberland': {'pop': 6856, 'tracts': 2}, 1023 | 'Daviess': {'pop': 96656, 'tracts': 23}, 1024 | 'Edmonson': {'pop': 12161, 'tracts': 4}, 1025 | 'Elliott': {'pop': 7852, 'tracts': 2}, 1026 | 'Estill': {'pop': 14672, 'tracts': 4}, 1027 | 'Fayette': {'pop': 295803, 'tracts': 82}, 1028 | 'Fleming': {'pop': 14348, 'tracts': 4}, 1029 | 'Floyd': {'pop': 39451, 'tracts': 10}, 1030 | 'Franklin': {'pop': 49285, 'tracts': 11}, 1031 | 'Fulton': {'pop': 6813, 'tracts': 2}, 1032 | 'Gallatin': {'pop': 8589, 'tracts': 2}, 1033 | 'Garrard': {'pop': 16912, 'tracts': 4}, 1034 | 'Grant': {'pop': 24662, 'tracts': 4}, 1035 | 'Graves': {'pop': 37121, 'tracts': 9}, 1036 | 'Grayson': {'pop': 25746, 'tracts': 7}, 1037 | 'Green': {'pop': 11258, 'tracts': 4}, 1038 | 'Greenup': {'pop': 36910, 'tracts': 9}, 1039 | 'Hancock': {'pop': 8565, 'tracts': 3}, 1040 | 'Hardin': {'pop': 105543, 'tracts': 22}, 1041 | 'Harlan': {'pop': 29278, 'tracts': 11}, 1042 | 'Harrison': {'pop': 18846, 'tracts': 5}, 1043 | 'Hart': {'pop': 18199, 'tracts': 5}, 1044 | 'Henderson': {'pop': 46250, 'tracts': 11}, 1045 | 'Henry': {'pop': 15416, 'tracts': 5}, 1046 | 'Hickman': {'pop': 4902, 'tracts': 1}, 1047 | 'Hopkins': {'pop': 46920, 'tracts': 12}, 1048 | 'Jackson': {'pop': 13494, 'tracts': 3}, 1049 | 'Jefferson': {'pop': 741096, 'tracts': 191}, 1050 | 'Jessamine': {'pop': 48586, 'tracts': 9}, 1051 | 'Johnson': {'pop': 23356, 'tracts': 6}, 1052 | 'Kenton': {'pop': 159720, 'tracts': 41}, 1053 | 'Knott': {'pop': 16346, 'tracts': 5}, 1054 | 'Knox': {'pop': 31883, 'tracts': 8}, 1055 | 'Larue': {'pop': 14193, 'tracts': 4}, 1056 | 'Laurel': {'pop': 58849, 'tracts': 13}, 1057 | 'Lawrence': {'pop': 15860, 'tracts': 5}, 1058 | 'Lee': {'pop': 7887, 'tracts': 3}, 1059 | 'Leslie': {'pop': 11310, 'tracts': 3}, 1060 | 'Letcher': {'pop': 24519, 'tracts': 7}, 1061 | 'Lewis': {'pop': 13870, 'tracts': 4}, 1062 | 'Lincoln': {'pop': 24742, 'tracts': 6}, 1063 | 'Livingston': {'pop': 9519, 'tracts': 2}, 1064 | 'Logan': {'pop': 26835, 'tracts': 6}, 1065 | 'Lyon': {'pop': 8314, 'tracts': 3}, 1066 | 'Madison': {'pop': 82916, 'tracts': 19}, 1067 | 'Magoffin': {'pop': 13333, 'tracts': 4}, 1068 | 'Marion': {'pop': 19820, 'tracts': 6}, 1069 | 'Marshall': {'pop': 31448, 'tracts': 6}, 1070 | 'Martin': {'pop': 12929, 'tracts': 3}, 1071 | 'Mason': {'pop': 17490, 'tracts': 5}, 1072 | 'McCracken': {'pop': 65565, 'tracts': 17}, 1073 | 'McCreary': {'pop': 18306, 'tracts': 4}, 1074 | 'McLean': {'pop': 9531, 'tracts': 3}, 1075 | 'Meade': {'pop': 28602, 'tracts': 8}, 1076 | 'Menifee': {'pop': 6306, 'tracts': 2}, 1077 | 'Mercer': {'pop': 21331, 'tracts': 5}, 1078 | 'Metcalfe': {'pop': 10099, 'tracts': 3}, 1079 | 'Monroe': {'pop': 10963, 'tracts': 4}, 1080 | 'Montgomery': {'pop': 26499, 'tracts': 6}, 1081 | 'Morgan': {'pop': 13923, 'tracts': 5}, 1082 | 'Muhlenberg': {'pop': 31499, 'tracts': 9}, 1083 | 'Nelson': {'pop': 43437, 'tracts': 9}, 1084 | 'Nicholas': {'pop': 7135, 'tracts': 2}, 1085 | 'Ohio': {'pop': 23842, 'tracts': 7}, 1086 | 'Oldham': {'pop': 60316, 'tracts': 14}, 1087 | 'Owen': {'pop': 10841, 'tracts': 3}, 1088 | 'Owsley': {'pop': 4755, 'tracts': 2}, 1089 | 'Pendleton': {'pop': 14877, 'tracts': 3}, 1090 | 'Perry': {'pop': 28712, 'tracts': 8}, 1091 | 'Pike': {'pop': 65024, 'tracts': 19}, 1092 | 'Powell': {'pop': 12613, 'tracts': 2}, 1093 | 'Pulaski': {'pop': 63063, 'tracts': 14}, 1094 | 'Robertson': {'pop': 2282, 'tracts': 1}, 1095 | 'Rockcastle': {'pop': 17056, 'tracts': 4}, 1096 | 'Rowan': {'pop': 23333, 'tracts': 4}, 1097 | 'Russell': {'pop': 17565, 'tracts': 5}, 1098 | 'Scott': {'pop': 47173, 'tracts': 14}, 1099 | 'Shelby': {'pop': 42074, 'tracts': 9}, 1100 | 'Simpson': {'pop': 17327, 'tracts': 4}, 1101 | 'Spencer': {'pop': 17061, 'tracts': 4}, 1102 | 'Taylor': {'pop': 24512, 'tracts': 5}, 1103 | 'Todd': {'pop': 12460, 'tracts': 4}, 1104 | 'Trigg': {'pop': 14339, 'tracts': 5}, 1105 | 'Trimble': {'pop': 8809, 'tracts': 2}, 1106 | 'Union': {'pop': 15007, 'tracts': 4}, 1107 | 'Warren': {'pop': 113792, 'tracts': 24}, 1108 | 'Washington': {'pop': 11717, 'tracts': 3}, 1109 | 'Wayne': {'pop': 20813, 'tracts': 5}, 1110 | 'Webster': {'pop': 13621, 'tracts': 4}, 1111 | 'Whitley': {'pop': 35637, 'tracts': 8}, 1112 | 'Wolfe': {'pop': 7355, 'tracts': 2}, 1113 | 'Woodford': {'pop': 24939, 'tracts': 8}}, 1114 | 'LA': {'Acadia': {'pop': 61773, 'tracts': 12}, 1115 | 'Allen': {'pop': 25764, 'tracts': 5}, 1116 | 'Ascension': {'pop': 107215, 'tracts': 14}, 1117 | 'Assumption': {'pop': 23421, 'tracts': 6}, 1118 | 'Avoyelles': {'pop': 42073, 'tracts': 9}, 1119 | 'Beauregard': {'pop': 35654, 'tracts': 7}, 1120 | 'Bienville': {'pop': 14353, 'tracts': 5}, 1121 | 'Bossier': {'pop': 116979, 'tracts': 22}, 1122 | 'Caddo': {'pop': 254969, 'tracts': 64}, 1123 | 'Calcasieu': {'pop': 192768, 'tracts': 44}, 1124 | 'Caldwell': {'pop': 10132, 'tracts': 3}, 1125 | 'Cameron': {'pop': 6839, 'tracts': 3}, 1126 | 'Catahoula': {'pop': 10407, 'tracts': 3}, 1127 | 'Claiborne': {'pop': 17195, 'tracts': 5}, 1128 | 'Concordia': {'pop': 20822, 'tracts': 5}, 1129 | 'De Soto': {'pop': 26656, 'tracts': 7}, 1130 | 'East Baton Rouge': {'pop': 440171, 'tracts': 92}, 1131 | 'East Carroll': {'pop': 7759, 'tracts': 3}, 1132 | 'East Feliciana': {'pop': 20267, 'tracts': 5}, 1133 | 'Evangeline': {'pop': 33984, 'tracts': 8}, 1134 | 'Franklin': {'pop': 20767, 'tracts': 6}, 1135 | 'Grant': {'pop': 22309, 'tracts': 5}, 1136 | 'Iberia': {'pop': 73240, 'tracts': 15}, 1137 | 'Iberville': {'pop': 33387, 'tracts': 7}, 1138 | 'Jackson': {'pop': 16274, 'tracts': 5}, 1139 | 'Jefferson': {'pop': 432552, 'tracts': 127}, 1140 | 'Jefferson Davis': {'pop': 31594, 'tracts': 7}, 1141 | 'La Salle': {'pop': 14890, 'tracts': 3}, 1142 | 'Lafayette': {'pop': 221578, 'tracts': 43}, 1143 | 'Lafourche': {'pop': 96318, 'tracts': 23}, 1144 | 'Lincoln': {'pop': 46735, 'tracts': 10}, 1145 | 'Livingston': {'pop': 128026, 'tracts': 17}, 1146 | 'Madison': {'pop': 12093, 'tracts': 5}, 1147 | 'Morehouse': {'pop': 27979, 'tracts': 8}, 1148 | 'Natchitoches': {'pop': 39566, 'tracts': 9}, 1149 | 'Orleans': {'pop': 343829, 'tracts': 177}, 1150 | 'Ouachita': {'pop': 153720, 'tracts': 40}, 1151 | 'Plaquemines': {'pop': 23042, 'tracts': 9}, 1152 | 'Pointe Coupee': {'pop': 22802, 'tracts': 6}, 1153 | 'Rapides': {'pop': 131613, 'tracts': 33}, 1154 | 'Red River': {'pop': 9091, 'tracts': 2}, 1155 | 'Richland': {'pop': 20725, 'tracts': 6}, 1156 | 'Sabine': {'pop': 24233, 'tracts': 7}, 1157 | 'St. Bernard': {'pop': 35897, 'tracts': 18}, 1158 | 'St. Charles': {'pop': 52780, 'tracts': 13}, 1159 | 'St. Helena': {'pop': 11203, 'tracts': 2}, 1160 | 'St. James': {'pop': 22102, 'tracts': 7}, 1161 | 'St. John the Baptist': {'pop': 45924, 'tracts': 11}, 1162 | 'St. Landry': {'pop': 83384, 'tracts': 19}, 1163 | 'St. Martin': {'pop': 52160, 'tracts': 11}, 1164 | 'St. Mary': {'pop': 54650, 'tracts': 16}, 1165 | 'St. Tammany': {'pop': 233740, 'tracts': 43}, 1166 | 'Tangipahoa': {'pop': 121097, 'tracts': 20}, 1167 | 'Tensas': {'pop': 5252, 'tracts': 3}, 1168 | 'Terrebonne': {'pop': 111860, 'tracts': 21}, 1169 | 'Union': {'pop': 22721, 'tracts': 6}, 1170 | 'Vermilion': {'pop': 57999, 'tracts': 12}, 1171 | 'Vernon': {'pop': 52334, 'tracts': 12}, 1172 | 'Washington': {'pop': 47168, 'tracts': 11}, 1173 | 'Webster': {'pop': 41207, 'tracts': 11}, 1174 | 'West Baton Rouge': {'pop': 23788, 'tracts': 5}, 1175 | 'West Carroll': {'pop': 11604, 'tracts': 3}, 1176 | 'West Feliciana': {'pop': 15625, 'tracts': 3}, 1177 | 'Winn': {'pop': 15313, 'tracts': 4}}, 1178 | 'MA': {'Barnstable': {'pop': 215888, 'tracts': 57}, 1179 | 'Berkshire': {'pop': 131219, 'tracts': 39}, 1180 | 'Bristol': {'pop': 548285, 'tracts': 126}, 1181 | 'Dukes': {'pop': 16535, 'tracts': 4}, 1182 | 'Essex': {'pop': 743159, 'tracts': 163}, 1183 | 'Franklin': {'pop': 71372, 'tracts': 18}, 1184 | 'Hampden': {'pop': 463490, 'tracts': 103}, 1185 | 'Hampshire': {'pop': 158080, 'tracts': 36}, 1186 | 'Middlesex': {'pop': 1503085, 'tracts': 318}, 1187 | 'Nantucket': {'pop': 10172, 'tracts': 6}, 1188 | 'Norfolk': {'pop': 670850, 'tracts': 130}, 1189 | 'Plymouth': {'pop': 494919, 'tracts': 100}, 1190 | 'Suffolk': {'pop': 722023, 'tracts': 204}, 1191 | 'Worcester': {'pop': 798552, 'tracts': 172}}, 1192 | 'MD': {'Allegany': {'pop': 75087, 'tracts': 23}, 1193 | 'Anne Arundel': {'pop': 537656, 'tracts': 104}, 1194 | 'Baltimore': {'pop': 805029, 'tracts': 214}, 1195 | 'Baltimore City': {'pop': 620961, 'tracts': 200}, 1196 | 'Calvert': {'pop': 88737, 'tracts': 18}, 1197 | 'Caroline': {'pop': 33066, 'tracts': 9}, 1198 | 'Carroll': {'pop': 167134, 'tracts': 38}, 1199 | 'Cecil': {'pop': 101108, 'tracts': 19}, 1200 | 'Charles': {'pop': 146551, 'tracts': 30}, 1201 | 'Dorchester': {'pop': 32618, 'tracts': 10}, 1202 | 'Frederick': {'pop': 233385, 'tracts': 61}, 1203 | 'Garrett': {'pop': 30097, 'tracts': 7}, 1204 | 'Harford': {'pop': 244826, 'tracts': 57}, 1205 | 'Howard': {'pop': 287085, 'tracts': 55}, 1206 | 'Kent': {'pop': 20197, 'tracts': 5}, 1207 | 'Montgomery': {'pop': 971777, 'tracts': 215}, 1208 | "Prince George's": {'pop': 863420, 'tracts': 218}, 1209 | "Queen Anne's": {'pop': 47798, 'tracts': 12}, 1210 | 'Somerset': {'pop': 26470, 'tracts': 8}, 1211 | "St. Mary's": {'pop': 105151, 'tracts': 18}, 1212 | 'Talbot': {'pop': 37782, 'tracts': 10}, 1213 | 'Washington': {'pop': 147430, 'tracts': 32}, 1214 | 'Wicomico': {'pop': 98733, 'tracts': 19}, 1215 | 'Worcester': {'pop': 51454, 'tracts': 17}}, 1216 | 'ME': {'Androscoggin': {'pop': 107702, 'tracts': 28}, 1217 | 'Aroostook': {'pop': 71870, 'tracts': 24}, 1218 | 'Cumberland': {'pop': 281674, 'tracts': 67}, 1219 | 'Franklin': {'pop': 30768, 'tracts': 9}, 1220 | 'Hancock': {'pop': 54418, 'tracts': 17}, 1221 | 'Kennebec': {'pop': 122151, 'tracts': 31}, 1222 | 'Knox': {'pop': 39736, 'tracts': 11}, 1223 | 'Lincoln': {'pop': 34457, 'tracts': 9}, 1224 | 'Oxford': {'pop': 57833, 'tracts': 17}, 1225 | 'Penobscot': {'pop': 153923, 'tracts': 46}, 1226 | 'Piscataquis': {'pop': 17535, 'tracts': 8}, 1227 | 'Sagadahoc': {'pop': 35293, 'tracts': 8}, 1228 | 'Somerset': {'pop': 52228, 'tracts': 17}, 1229 | 'Waldo': {'pop': 38786, 'tracts': 8}, 1230 | 'Washington': {'pop': 32856, 'tracts': 14}, 1231 | 'York': {'pop': 197131, 'tracts': 41}}, 1232 | 'MI': {'Alcona': {'pop': 10942, 'tracts': 5}, 1233 | 'Alger': {'pop': 9601, 'tracts': 3}, 1234 | 'Allegan': {'pop': 111408, 'tracts': 25}, 1235 | 'Alpena': {'pop': 29598, 'tracts': 10}, 1236 | 'Antrim': {'pop': 23580, 'tracts': 7}, 1237 | 'Arenac': {'pop': 15899, 'tracts': 5}, 1238 | 'Baraga': {'pop': 8860, 'tracts': 2}, 1239 | 'Barry': {'pop': 59173, 'tracts': 11}, 1240 | 'Bay': {'pop': 107771, 'tracts': 26}, 1241 | 'Benzie': {'pop': 17525, 'tracts': 5}, 1242 | 'Berrien': {'pop': 156813, 'tracts': 48}, 1243 | 'Branch': {'pop': 45248, 'tracts': 12}, 1244 | 'Calhoun': {'pop': 136146, 'tracts': 39}, 1245 | 'Cass': {'pop': 52293, 'tracts': 11}, 1246 | 'Charlevoix': {'pop': 25949, 'tracts': 13}, 1247 | 'Cheboygan': {'pop': 26152, 'tracts': 8}, 1248 | 'Chippewa': {'pop': 38520, 'tracts': 14}, 1249 | 'Clare': {'pop': 30926, 'tracts': 11}, 1250 | 'Clinton': {'pop': 75382, 'tracts': 22}, 1251 | 'Crawford': {'pop': 14074, 'tracts': 5}, 1252 | 'Delta': {'pop': 37069, 'tracts': 11}, 1253 | 'Dickinson': {'pop': 26168, 'tracts': 7}, 1254 | 'Eaton': {'pop': 107759, 'tracts': 28}, 1255 | 'Emmet': {'pop': 32694, 'tracts': 8}, 1256 | 'Genesee': {'pop': 425790, 'tracts': 131}, 1257 | 'Gladwin': {'pop': 25692, 'tracts': 9}, 1258 | 'Gogebic': {'pop': 16427, 'tracts': 7}, 1259 | 'Grand Traverse': {'pop': 86986, 'tracts': 16}, 1260 | 'Gratiot': {'pop': 42476, 'tracts': 10}, 1261 | 'Hillsdale': {'pop': 46688, 'tracts': 12}, 1262 | 'Houghton': {'pop': 36628, 'tracts': 11}, 1263 | 'Huron': {'pop': 33118, 'tracts': 12}, 1264 | 'Ingham': {'pop': 280895, 'tracts': 81}, 1265 | 'Ionia': {'pop': 63905, 'tracts': 13}, 1266 | 'Iosco': {'pop': 25887, 'tracts': 9}, 1267 | 'Iron': {'pop': 11817, 'tracts': 5}, 1268 | 'Isabella': {'pop': 70311, 'tracts': 15}, 1269 | 'Jackson': {'pop': 160248, 'tracts': 38}, 1270 | 'Kalamazoo': {'pop': 250331, 'tracts': 57}, 1271 | 'Kalkaska': {'pop': 17153, 'tracts': 5}, 1272 | 'Kent': {'pop': 602622, 'tracts': 128}, 1273 | 'Keweenaw': {'pop': 2156, 'tracts': 2}, 1274 | 'Lake': {'pop': 11539, 'tracts': 4}, 1275 | 'Lapeer': {'pop': 88319, 'tracts': 24}, 1276 | 'Leelanau': {'pop': 21708, 'tracts': 6}, 1277 | 'Lenawee': {'pop': 99892, 'tracts': 23}, 1278 | 'Livingston': {'pop': 180967, 'tracts': 61}, 1279 | 'Luce': {'pop': 6631, 'tracts': 3}, 1280 | 'Mackinac': {'pop': 11113, 'tracts': 6}, 1281 | 'Macomb': {'pop': 840978, 'tracts': 216}, 1282 | 'Manistee': {'pop': 24733, 'tracts': 9}, 1283 | 'Marquette': {'pop': 67077, 'tracts': 24}, 1284 | 'Mason': {'pop': 28705, 'tracts': 8}, 1285 | 'Mecosta': {'pop': 42798, 'tracts': 11}, 1286 | 'Menominee': {'pop': 24029, 'tracts': 7}, 1287 | 'Midland': {'pop': 83629, 'tracts': 19}, 1288 | 'Missaukee': {'pop': 14849, 'tracts': 4}, 1289 | 'Monroe': {'pop': 152021, 'tracts': 39}, 1290 | 'Montcalm': {'pop': 63342, 'tracts': 13}, 1291 | 'Montmorency': {'pop': 9765, 'tracts': 5}, 1292 | 'Muskegon': {'pop': 172188, 'tracts': 42}, 1293 | 'Newaygo': {'pop': 48460, 'tracts': 11}, 1294 | 'Oakland': {'pop': 1202362, 'tracts': 338}, 1295 | 'Oceana': {'pop': 26570, 'tracts': 7}, 1296 | 'Ogemaw': {'pop': 21699, 'tracts': 7}, 1297 | 'Ontonagon': {'pop': 6780, 'tracts': 4}, 1298 | 'Osceola': {'pop': 23528, 'tracts': 6}, 1299 | 'Oscoda': {'pop': 8640, 'tracts': 5}, 1300 | 'Otsego': {'pop': 24164, 'tracts': 6}, 1301 | 'Ottawa': {'pop': 263801, 'tracts': 53}, 1302 | 'Presque Isle': {'pop': 13376, 'tracts': 6}, 1303 | 'Roscommon': {'pop': 24449, 'tracts': 10}, 1304 | 'Saginaw': {'pop': 200169, 'tracts': 56}, 1305 | 'Sanilac': {'pop': 43114, 'tracts': 12}, 1306 | 'Schoolcraft': {'pop': 8485, 'tracts': 3}, 1307 | 'Shiawassee': {'pop': 70648, 'tracts': 17}, 1308 | 'St. Clair': {'pop': 163040, 'tracts': 49}, 1309 | 'St. Joseph': {'pop': 61295, 'tracts': 17}, 1310 | 'Tuscola': {'pop': 55729, 'tracts': 13}, 1311 | 'Van Buren': {'pop': 76258, 'tracts': 15}, 1312 | 'Washtenaw': {'pop': 344791, 'tracts': 100}, 1313 | 'Wayne': {'pop': 1820584, 'tracts': 610}, 1314 | 'Wexford': {'pop': 32735, 'tracts': 8}}, 1315 | 'MN': {'Aitkin': {'pop': 16202, 'tracts': 6}, 1316 | 'Anoka': {'pop': 330844, 'tracts': 83}, 1317 | 'Becker': {'pop': 32504, 'tracts': 10}, 1318 | 'Beltrami': {'pop': 44442, 'tracts': 10}, 1319 | 'Benton': {'pop': 38451, 'tracts': 9}, 1320 | 'Big Stone': {'pop': 5269, 'tracts': 3}, 1321 | 'Blue Earth': {'pop': 64013, 'tracts': 16}, 1322 | 'Brown': {'pop': 25893, 'tracts': 8}, 1323 | 'Carlton': {'pop': 35386, 'tracts': 7}, 1324 | 'Carver': {'pop': 91042, 'tracts': 19}, 1325 | 'Cass': {'pop': 28567, 'tracts': 10}, 1326 | 'Chippewa': {'pop': 12441, 'tracts': 4}, 1327 | 'Chisago': {'pop': 53887, 'tracts': 10}, 1328 | 'Clay': {'pop': 58999, 'tracts': 13}, 1329 | 'Clearwater': {'pop': 8695, 'tracts': 3}, 1330 | 'Cook': {'pop': 5176, 'tracts': 3}, 1331 | 'Cottonwood': {'pop': 11687, 'tracts': 4}, 1332 | 'Crow Wing': {'pop': 62500, 'tracts': 16}, 1333 | 'Dakota': {'pop': 398552, 'tracts': 95}, 1334 | 'Dodge': {'pop': 20087, 'tracts': 5}, 1335 | 'Douglas': {'pop': 36009, 'tracts': 9}, 1336 | 'Faribault': {'pop': 14553, 'tracts': 6}, 1337 | 'Fillmore': {'pop': 20866, 'tracts': 6}, 1338 | 'Freeborn': {'pop': 31255, 'tracts': 10}, 1339 | 'Goodhue': {'pop': 46183, 'tracts': 10}, 1340 | 'Grant': {'pop': 6018, 'tracts': 2}, 1341 | 'Hennepin': {'pop': 1152425, 'tracts': 299}, 1342 | 'Houston': {'pop': 19027, 'tracts': 5}, 1343 | 'Hubbard': {'pop': 20428, 'tracts': 7}, 1344 | 'Isanti': {'pop': 37816, 'tracts': 8}, 1345 | 'Itasca': {'pop': 45058, 'tracts': 11}, 1346 | 'Jackson': {'pop': 10266, 'tracts': 4}, 1347 | 'Kanabec': {'pop': 16239, 'tracts': 4}, 1348 | 'Kandiyohi': {'pop': 42239, 'tracts': 12}, 1349 | 'Kittson': {'pop': 4552, 'tracts': 2}, 1350 | 'Koochiching': {'pop': 13311, 'tracts': 4}, 1351 | 'Lac qui Parle': {'pop': 7259, 'tracts': 3}, 1352 | 'Lake': {'pop': 10866, 'tracts': 3}, 1353 | 'Lake of the Woods': {'pop': 4045, 'tracts': 2}, 1354 | 'Le Sueur': {'pop': 27703, 'tracts': 6}, 1355 | 'Lincoln': {'pop': 5896, 'tracts': 2}, 1356 | 'Lyon': {'pop': 25857, 'tracts': 7}, 1357 | 'Mahnomen': {'pop': 5413, 'tracts': 2}, 1358 | 'Marshall': {'pop': 9439, 'tracts': 4}, 1359 | 'Martin': {'pop': 20840, 'tracts': 6}, 1360 | 'McLeod': {'pop': 36651, 'tracts': 7}, 1361 | 'Meeker': {'pop': 23300, 'tracts': 6}, 1362 | 'Mille Lacs': {'pop': 26097, 'tracts': 7}, 1363 | 'Morrison': {'pop': 33198, 'tracts': 8}, 1364 | 'Mower': {'pop': 39163, 'tracts': 11}, 1365 | 'Murray': {'pop': 8725, 'tracts': 3}, 1366 | 'Nicollet': {'pop': 32727, 'tracts': 7}, 1367 | 'Nobles': {'pop': 21378, 'tracts': 6}, 1368 | 'Norman': {'pop': 6852, 'tracts': 3}, 1369 | 'Olmsted': {'pop': 144248, 'tracts': 33}, 1370 | 'Otter Tail': {'pop': 57303, 'tracts': 17}, 1371 | 'Pennington': {'pop': 13930, 'tracts': 5}, 1372 | 'Pine': {'pop': 29750, 'tracts': 8}, 1373 | 'Pipestone': {'pop': 9596, 'tracts': 5}, 1374 | 'Polk': {'pop': 31600, 'tracts': 10}, 1375 | 'Pope': {'pop': 10995, 'tracts': 4}, 1376 | 'Ramsey': {'pop': 508640, 'tracts': 137}, 1377 | 'Red Lake': {'pop': 4089, 'tracts': 2}, 1378 | 'Redwood': {'pop': 16059, 'tracts': 6}, 1379 | 'Renville': {'pop': 15730, 'tracts': 6}, 1380 | 'Rice': {'pop': 64142, 'tracts': 13}, 1381 | 'Rock': {'pop': 9687, 'tracts': 3}, 1382 | 'Roseau': {'pop': 15629, 'tracts': 5}, 1383 | 'Scott': {'pop': 129928, 'tracts': 21}, 1384 | 'Sherburne': {'pop': 88499, 'tracts': 11}, 1385 | 'Sibley': {'pop': 15226, 'tracts': 4}, 1386 | 'St. Louis': {'pop': 200226, 'tracts': 66}, 1387 | 'Stearns': {'pop': 150642, 'tracts': 29}, 1388 | 'Steele': {'pop': 36576, 'tracts': 8}, 1389 | 'Stevens': {'pop': 9726, 'tracts': 3}, 1390 | 'Swift': {'pop': 9783, 'tracts': 4}, 1391 | 'Todd': {'pop': 24895, 'tracts': 8}, 1392 | 'Traverse': {'pop': 3558, 'tracts': 2}, 1393 | 'Wabasha': {'pop': 21676, 'tracts': 6}, 1394 | 'Wadena': {'pop': 13843, 'tracts': 3}, 1395 | 'Waseca': {'pop': 19136, 'tracts': 5}, 1396 | 'Washington': {'pop': 238136, 'tracts': 50}, 1397 | 'Watonwan': {'pop': 11211, 'tracts': 3}, 1398 | 'Wilkin': {'pop': 6576, 'tracts': 2}, 1399 | 'Winona': {'pop': 51461, 'tracts': 10}, 1400 | 'Wright': {'pop': 124700, 'tracts': 17}, 1401 | 'Yellow Medicine': {'pop': 10438, 'tracts': 4}}, 1402 | 'MO': {'Adair': {'pop': 25607, 'tracts': 7}, 1403 | 'Andrew': {'pop': 17291, 'tracts': 4}, 1404 | 'Atchison': {'pop': 5685, 'tracts': 2}, 1405 | 'Audrain': {'pop': 25529, 'tracts': 7}, 1406 | 'Barry': {'pop': 35597, 'tracts': 7}, 1407 | 'Barton': {'pop': 12402, 'tracts': 3}, 1408 | 'Bates': {'pop': 17049, 'tracts': 4}, 1409 | 'Benton': {'pop': 19056, 'tracts': 6}, 1410 | 'Bollinger': {'pop': 12363, 'tracts': 3}, 1411 | 'Boone': {'pop': 162642, 'tracts': 29}, 1412 | 'Buchanan': {'pop': 89201, 'tracts': 25}, 1413 | 'Butler': {'pop': 42794, 'tracts': 10}, 1414 | 'Caldwell': {'pop': 9424, 'tracts': 2}, 1415 | 'Callaway': {'pop': 44332, 'tracts': 8}, 1416 | 'Camden': {'pop': 44002, 'tracts': 11}, 1417 | 'Cape Girardeau': {'pop': 75674, 'tracts': 16}, 1418 | 'Carroll': {'pop': 9295, 'tracts': 3}, 1419 | 'Carter': {'pop': 6265, 'tracts': 2}, 1420 | 'Cass': {'pop': 99478, 'tracts': 20}, 1421 | 'Cedar': {'pop': 13982, 'tracts': 3}, 1422 | 'Chariton': {'pop': 7831, 'tracts': 3}, 1423 | 'Christian': {'pop': 77422, 'tracts': 14}, 1424 | 'Clark': {'pop': 7139, 'tracts': 3}, 1425 | 'Clay': {'pop': 221939, 'tracts': 44}, 1426 | 'Clinton': {'pop': 20743, 'tracts': 4}, 1427 | 'Cole': {'pop': 75990, 'tracts': 15}, 1428 | 'Cooper': {'pop': 17601, 'tracts': 5}, 1429 | 'Crawford': {'pop': 24696, 'tracts': 6}, 1430 | 'Dade': {'pop': 7883, 'tracts': 2}, 1431 | 'Dallas': {'pop': 16777, 'tracts': 3}, 1432 | 'Daviess': {'pop': 8433, 'tracts': 2}, 1433 | 'DeKalb': {'pop': 12892, 'tracts': 2}, 1434 | 'Dent': {'pop': 15657, 'tracts': 4}, 1435 | 'Douglas': {'pop': 13684, 'tracts': 3}, 1436 | 'Dunklin': {'pop': 31953, 'tracts': 10}, 1437 | 'Franklin': {'pop': 101492, 'tracts': 17}, 1438 | 'Gasconade': {'pop': 15222, 'tracts': 5}, 1439 | 'Gentry': {'pop': 6738, 'tracts': 2}, 1440 | 'Greene': {'pop': 275174, 'tracts': 62}, 1441 | 'Grundy': {'pop': 10261, 'tracts': 4}, 1442 | 'Harrison': {'pop': 8957, 'tracts': 3}, 1443 | 'Henry': {'pop': 22272, 'tracts': 6}, 1444 | 'Hickory': {'pop': 9627, 'tracts': 3}, 1445 | 'Holt': {'pop': 4912, 'tracts': 3}, 1446 | 'Howard': {'pop': 10144, 'tracts': 3}, 1447 | 'Howell': {'pop': 40400, 'tracts': 8}, 1448 | 'Iron': {'pop': 10630, 'tracts': 4}, 1449 | 'Jackson': {'pop': 674158, 'tracts': 199}, 1450 | 'Jasper': {'pop': 117404, 'tracts': 22}, 1451 | 'Jefferson': {'pop': 218733, 'tracts': 42}, 1452 | 'Johnson': {'pop': 52595, 'tracts': 9}, 1453 | 'Knox': {'pop': 4131, 'tracts': 2}, 1454 | 'Laclede': {'pop': 35571, 'tracts': 6}, 1455 | 'Lafayette': {'pop': 33381, 'tracts': 7}, 1456 | 'Lawrence': {'pop': 38634, 'tracts': 7}, 1457 | 'Lewis': {'pop': 10211, 'tracts': 4}, 1458 | 'Lincoln': {'pop': 52566, 'tracts': 7}, 1459 | 'Linn': {'pop': 12761, 'tracts': 5}, 1460 | 'Livingston': {'pop': 15195, 'tracts': 5}, 1461 | 'Macon': {'pop': 15566, 'tracts': 5}, 1462 | 'Madison': {'pop': 12226, 'tracts': 3}, 1463 | 'Maries': {'pop': 9176, 'tracts': 3}, 1464 | 'Marion': {'pop': 28781, 'tracts': 8}, 1465 | 'McDonald': {'pop': 23083, 'tracts': 4}, 1466 | 'Mercer': {'pop': 3785, 'tracts': 2}, 1467 | 'Miller': {'pop': 24748, 'tracts': 5}, 1468 | 'Mississippi': {'pop': 14358, 'tracts': 4}, 1469 | 'Moniteau': {'pop': 15607, 'tracts': 4}, 1470 | 'Monroe': {'pop': 8840, 'tracts': 3}, 1471 | 'Montgomery': {'pop': 12236, 'tracts': 4}, 1472 | 'Morgan': {'pop': 20565, 'tracts': 5}, 1473 | 'New Madrid': {'pop': 18956, 'tracts': 6}, 1474 | 'Newton': {'pop': 58114, 'tracts': 12}, 1475 | 'Nodaway': {'pop': 23370, 'tracts': 5}, 1476 | 'Oregon': {'pop': 10881, 'tracts': 3}, 1477 | 'Osage': {'pop': 13878, 'tracts': 4}, 1478 | 'Ozark': {'pop': 9723, 'tracts': 2}, 1479 | 'Pemiscot': {'pop': 18296, 'tracts': 6}, 1480 | 'Perry': {'pop': 18971, 'tracts': 5}, 1481 | 'Pettis': {'pop': 42201, 'tracts': 11}, 1482 | 'Phelps': {'pop': 45156, 'tracts': 10}, 1483 | 'Pike': {'pop': 18516, 'tracts': 5}, 1484 | 'Platte': {'pop': 89322, 'tracts': 20}, 1485 | 'Polk': {'pop': 31137, 'tracts': 4}, 1486 | 'Pulaski': {'pop': 52274, 'tracts': 9}, 1487 | 'Putnam': {'pop': 4979, 'tracts': 2}, 1488 | 'Ralls': {'pop': 10167, 'tracts': 3}, 1489 | 'Randolph': {'pop': 25414, 'tracts': 6}, 1490 | 'Ray': {'pop': 23494, 'tracts': 4}, 1491 | 'Reynolds': {'pop': 6696, 'tracts': 2}, 1492 | 'Ripley': {'pop': 14100, 'tracts': 4}, 1493 | 'Saline': {'pop': 23370, 'tracts': 8}, 1494 | 'Schuyler': {'pop': 4431, 'tracts': 2}, 1495 | 'Scotland': {'pop': 4843, 'tracts': 2}, 1496 | 'Scott': {'pop': 39191, 'tracts': 10}, 1497 | 'Shannon': {'pop': 8441, 'tracts': 2}, 1498 | 'Shelby': {'pop': 6373, 'tracts': 3}, 1499 | 'St. Charles': {'pop': 360485, 'tracts': 79}, 1500 | 'St. Clair': {'pop': 9805, 'tracts': 3}, 1501 | 'St. Francois': {'pop': 65359, 'tracts': 11}, 1502 | 'St. Louis': {'pop': 998954, 'tracts': 199}, 1503 | 'St. Louis City': {'pop': 319294, 'tracts': 106}, 1504 | 'Ste. Genevieve': {'pop': 18145, 'tracts': 4}, 1505 | 'Stoddard': {'pop': 29968, 'tracts': 8}, 1506 | 'Stone': {'pop': 32202, 'tracts': 6}, 1507 | 'Sullivan': {'pop': 6714, 'tracts': 3}, 1508 | 'Taney': {'pop': 51675, 'tracts': 10}, 1509 | 'Texas': {'pop': 26008, 'tracts': 4}, 1510 | 'Vernon': {'pop': 21159, 'tracts': 6}, 1511 | 'Warren': {'pop': 32513, 'tracts': 5}, 1512 | 'Washington': {'pop': 25195, 'tracts': 5}, 1513 | 'Wayne': {'pop': 13521, 'tracts': 4}, 1514 | 'Webster': {'pop': 36202, 'tracts': 8}, 1515 | 'Worth': {'pop': 2171, 'tracts': 1}, 1516 | 'Wright': {'pop': 18815, 'tracts': 4}}, 1517 | 'MS': {'Adams': {'pop': 32297, 'tracts': 9}, 1518 | 'Alcorn': {'pop': 37057, 'tracts': 7}, 1519 | 'Amite': {'pop': 13131, 'tracts': 3}, 1520 | 'Attala': {'pop': 19564, 'tracts': 6}, 1521 | 'Benton': {'pop': 8729, 'tracts': 2}, 1522 | 'Bolivar': {'pop': 34145, 'tracts': 8}, 1523 | 'Calhoun': {'pop': 14962, 'tracts': 5}, 1524 | 'Carroll': {'pop': 10597, 'tracts': 2}, 1525 | 'Chickasaw': {'pop': 17392, 'tracts': 4}, 1526 | 'Choctaw': {'pop': 8547, 'tracts': 3}, 1527 | 'Claiborne': {'pop': 9604, 'tracts': 3}, 1528 | 'Clarke': {'pop': 16732, 'tracts': 4}, 1529 | 'Clay': {'pop': 20634, 'tracts': 5}, 1530 | 'Coahoma': {'pop': 26151, 'tracts': 7}, 1531 | 'Copiah': {'pop': 29449, 'tracts': 6}, 1532 | 'Covington': {'pop': 19568, 'tracts': 4}, 1533 | 'DeSoto': {'pop': 161252, 'tracts': 33}, 1534 | 'Forrest': {'pop': 74934, 'tracts': 17}, 1535 | 'Franklin': {'pop': 8118, 'tracts': 2}, 1536 | 'George': {'pop': 22578, 'tracts': 5}, 1537 | 'Greene': {'pop': 14400, 'tracts': 2}, 1538 | 'Grenada': {'pop': 21906, 'tracts': 5}, 1539 | 'Hancock': {'pop': 43929, 'tracts': 7}, 1540 | 'Harrison': {'pop': 187105, 'tracts': 46}, 1541 | 'Hinds': {'pop': 245285, 'tracts': 64}, 1542 | 'Holmes': {'pop': 19198, 'tracts': 5}, 1543 | 'Humphreys': {'pop': 9375, 'tracts': 3}, 1544 | 'Issaquena': {'pop': 1406, 'tracts': 1}, 1545 | 'Itawamba': {'pop': 23401, 'tracts': 5}, 1546 | 'Jackson': {'pop': 139668, 'tracts': 28}, 1547 | 'Jasper': {'pop': 17062, 'tracts': 4}, 1548 | 'Jefferson': {'pop': 7726, 'tracts': 2}, 1549 | 'Jefferson Davis': {'pop': 12487, 'tracts': 3}, 1550 | 'Jones': {'pop': 67761, 'tracts': 14}, 1551 | 'Kemper': {'pop': 10456, 'tracts': 2}, 1552 | 'Lafayette': {'pop': 47351, 'tracts': 10}, 1553 | 'Lamar': {'pop': 55658, 'tracts': 8}, 1554 | 'Lauderdale': {'pop': 80261, 'tracts': 19}, 1555 | 'Lawrence': {'pop': 12929, 'tracts': 3}, 1556 | 'Leake': {'pop': 23805, 'tracts': 5}, 1557 | 'Lee': {'pop': 82910, 'tracts': 19}, 1558 | 'Leflore': {'pop': 32317, 'tracts': 8}, 1559 | 'Lincoln': {'pop': 34869, 'tracts': 6}, 1560 | 'Lowndes': {'pop': 59779, 'tracts': 14}, 1561 | 'Madison': {'pop': 95203, 'tracts': 21}, 1562 | 'Marion': {'pop': 27088, 'tracts': 6}, 1563 | 'Marshall': {'pop': 37144, 'tracts': 6}, 1564 | 'Monroe': {'pop': 36989, 'tracts': 9}, 1565 | 'Montgomery': {'pop': 10925, 'tracts': 3}, 1566 | 'Neshoba': {'pop': 29676, 'tracts': 7}, 1567 | 'Newton': {'pop': 21720, 'tracts': 5}, 1568 | 'Noxubee': {'pop': 11545, 'tracts': 3}, 1569 | 'Oktibbeha': {'pop': 47671, 'tracts': 8}, 1570 | 'Panola': {'pop': 34707, 'tracts': 6}, 1571 | 'Pearl River': {'pop': 55834, 'tracts': 9}, 1572 | 'Perry': {'pop': 12250, 'tracts': 3}, 1573 | 'Pike': {'pop': 40404, 'tracts': 8}, 1574 | 'Pontotoc': {'pop': 29957, 'tracts': 6}, 1575 | 'Prentiss': {'pop': 25276, 'tracts': 5}, 1576 | 'Quitman': {'pop': 8223, 'tracts': 3}, 1577 | 'Rankin': {'pop': 141617, 'tracts': 27}, 1578 | 'Scott': {'pop': 28264, 'tracts': 6}, 1579 | 'Sharkey': {'pop': 4916, 'tracts': 2}, 1580 | 'Simpson': {'pop': 27503, 'tracts': 5}, 1581 | 'Smith': {'pop': 16491, 'tracts': 3}, 1582 | 'Stone': {'pop': 17786, 'tracts': 3}, 1583 | 'Sunflower': {'pop': 29450, 'tracts': 7}, 1584 | 'Tallahatchie': {'pop': 15378, 'tracts': 4}, 1585 | 'Tate': {'pop': 28886, 'tracts': 5}, 1586 | 'Tippah': {'pop': 22232, 'tracts': 4}, 1587 | 'Tishomingo': {'pop': 19593, 'tracts': 4}, 1588 | 'Tunica': {'pop': 10778, 'tracts': 3}, 1589 | 'Union': {'pop': 27134, 'tracts': 6}, 1590 | 'Walthall': {'pop': 15443, 'tracts': 3}, 1591 | 'Warren': {'pop': 48773, 'tracts': 12}, 1592 | 'Washington': {'pop': 51137, 'tracts': 19}, 1593 | 'Wayne': {'pop': 20747, 'tracts': 4}, 1594 | 'Webster': {'pop': 10253, 'tracts': 3}, 1595 | 'Wilkinson': {'pop': 9878, 'tracts': 2}, 1596 | 'Winston': {'pop': 19198, 'tracts': 5}, 1597 | 'Yalobusha': {'pop': 12678, 'tracts': 3}, 1598 | 'Yazoo': {'pop': 28065, 'tracts': 6}}, 1599 | 'MT': {'Beaverhead': {'pop': 9246, 'tracts': 3}, 1600 | 'Big Horn': {'pop': 12865, 'tracts': 5}, 1601 | 'Blaine': {'pop': 6491, 'tracts': 4}, 1602 | 'Broadwater': {'pop': 5612, 'tracts': 2}, 1603 | 'Carbon': {'pop': 10078, 'tracts': 5}, 1604 | 'Carter': {'pop': 1160, 'tracts': 1}, 1605 | 'Cascade': {'pop': 81327, 'tracts': 22}, 1606 | 'Chouteau': {'pop': 5813, 'tracts': 2}, 1607 | 'Custer': {'pop': 11699, 'tracts': 6}, 1608 | 'Daniels': {'pop': 1751, 'tracts': 1}, 1609 | 'Dawson': {'pop': 8966, 'tracts': 3}, 1610 | 'Deer Lodge': {'pop': 9298, 'tracts': 3}, 1611 | 'Fallon': {'pop': 2890, 'tracts': 1}, 1612 | 'Fergus': {'pop': 11586, 'tracts': 2}, 1613 | 'Flathead': {'pop': 90928, 'tracts': 19}, 1614 | 'Gallatin': {'pop': 89513, 'tracts': 22}, 1615 | 'Garfield': {'pop': 1206, 'tracts': 1}, 1616 | 'Glacier': {'pop': 13399, 'tracts': 4}, 1617 | 'Golden Valley': {'pop': 884, 'tracts': 1}, 1618 | 'Granite': {'pop': 3079, 'tracts': 1}, 1619 | 'Hill': {'pop': 16096, 'tracts': 6}, 1620 | 'Jefferson': {'pop': 11406, 'tracts': 3}, 1621 | 'Judith Basin': {'pop': 2072, 'tracts': 1}, 1622 | 'Lake': {'pop': 28746, 'tracts': 8}, 1623 | 'Lewis and Clark': {'pop': 63395, 'tracts': 14}, 1624 | 'Liberty': {'pop': 2339, 'tracts': 1}, 1625 | 'Lincoln': {'pop': 19687, 'tracts': 5}, 1626 | 'Madison': {'pop': 7691, 'tracts': 3}, 1627 | 'McCone': {'pop': 1734, 'tracts': 1}, 1628 | 'Meagher': {'pop': 1891, 'tracts': 1}, 1629 | 'Mineral': {'pop': 4223, 'tracts': 2}, 1630 | 'Missoula': {'pop': 109299, 'tracts': 20}, 1631 | 'Musselshell': {'pop': 4538, 'tracts': 2}, 1632 | 'Park': {'pop': 15636, 'tracts': 6}, 1633 | 'Petroleum': {'pop': 494, 'tracts': 1}, 1634 | 'Phillips': {'pop': 4253, 'tracts': 1}, 1635 | 'Pondera': {'pop': 6153, 'tracts': 2}, 1636 | 'Powder River': {'pop': 1743, 'tracts': 1}, 1637 | 'Powell': {'pop': 7027, 'tracts': 2}, 1638 | 'Prairie': {'pop': 1179, 'tracts': 1}, 1639 | 'Ravalli': {'pop': 40212, 'tracts': 10}, 1640 | 'Richland': {'pop': 9746, 'tracts': 4}, 1641 | 'Roosevelt': {'pop': 10425, 'tracts': 3}, 1642 | 'Rosebud': {'pop': 9233, 'tracts': 4}, 1643 | 'Sanders': {'pop': 11413, 'tracts': 3}, 1644 | 'Sheridan': {'pop': 3384, 'tracts': 2}, 1645 | 'Silver Bow': {'pop': 34200, 'tracts': 8}, 1646 | 'Stillwater': {'pop': 9117, 'tracts': 3}, 1647 | 'Sweet Grass': {'pop': 3651, 'tracts': 1}, 1648 | 'Teton': {'pop': 6073, 'tracts': 3}, 1649 | 'Toole': {'pop': 5324, 'tracts': 3}, 1650 | 'Treasure': {'pop': 718, 'tracts': 1}, 1651 | 'Valley': {'pop': 7369, 'tracts': 3}, 1652 | 'Wheatland': {'pop': 2168, 'tracts': 1}, 1653 | 'Wibaux': {'pop': 1017, 'tracts': 1}, 1654 | 'Yellowstone': {'pop': 147972, 'tracts': 32}}, 1655 | 'NC': {'Alamance': {'pop': 151131, 'tracts': 36}, 1656 | 'Alexander': {'pop': 37198, 'tracts': 7}, 1657 | 'Alleghany': {'pop': 11155, 'tracts': 3}, 1658 | 'Anson': {'pop': 26948, 'tracts': 6}, 1659 | 'Ashe': {'pop': 27281, 'tracts': 6}, 1660 | 'Avery': {'pop': 17797, 'tracts': 5}, 1661 | 'Beaufort': {'pop': 47759, 'tracts': 11}, 1662 | 'Bertie': {'pop': 21282, 'tracts': 4}, 1663 | 'Bladen': {'pop': 35190, 'tracts': 6}, 1664 | 'Brunswick': {'pop': 107431, 'tracts': 33}, 1665 | 'Buncombe': {'pop': 238318, 'tracts': 56}, 1666 | 'Burke': {'pop': 90912, 'tracts': 18}, 1667 | 'Cabarrus': {'pop': 178011, 'tracts': 37}, 1668 | 'Caldwell': {'pop': 83029, 'tracts': 17}, 1669 | 'Camden': {'pop': 9980, 'tracts': 2}, 1670 | 'Carteret': {'pop': 66469, 'tracts': 38}, 1671 | 'Caswell': {'pop': 23719, 'tracts': 6}, 1672 | 'Catawba': {'pop': 154358, 'tracts': 31}, 1673 | 'Chatham': {'pop': 63505, 'tracts': 13}, 1674 | 'Cherokee': {'pop': 27444, 'tracts': 7}, 1675 | 'Chowan': {'pop': 14793, 'tracts': 3}, 1676 | 'Clay': {'pop': 10587, 'tracts': 2}, 1677 | 'Cleveland': {'pop': 98078, 'tracts': 22}, 1678 | 'Columbus': {'pop': 58098, 'tracts': 13}, 1679 | 'Craven': {'pop': 103505, 'tracts': 21}, 1680 | 'Cumberland': {'pop': 319431, 'tracts': 68}, 1681 | 'Currituck': {'pop': 23547, 'tracts': 8}, 1682 | 'Dare': {'pop': 33920, 'tracts': 11}, 1683 | 'Davidson': {'pop': 162878, 'tracts': 34}, 1684 | 'Davie': {'pop': 41240, 'tracts': 7}, 1685 | 'Duplin': {'pop': 58505, 'tracts': 11}, 1686 | 'Durham': {'pop': 267587, 'tracts': 60}, 1687 | 'Edgecombe': {'pop': 56552, 'tracts': 14}, 1688 | 'Forsyth': {'pop': 350670, 'tracts': 93}, 1689 | 'Franklin': {'pop': 60619, 'tracts': 12}, 1690 | 'Gaston': {'pop': 206086, 'tracts': 65}, 1691 | 'Gates': {'pop': 12197, 'tracts': 3}, 1692 | 'Graham': {'pop': 8861, 'tracts': 3}, 1693 | 'Granville': {'pop': 59916, 'tracts': 13}, 1694 | 'Greene': {'pop': 21362, 'tracts': 4}, 1695 | 'Guilford': {'pop': 488406, 'tracts': 119}, 1696 | 'Halifax': {'pop': 54691, 'tracts': 12}, 1697 | 'Harnett': {'pop': 114678, 'tracts': 27}, 1698 | 'Haywood': {'pop': 59036, 'tracts': 16}, 1699 | 'Henderson': {'pop': 106740, 'tracts': 27}, 1700 | 'Hertford': {'pop': 24669, 'tracts': 5}, 1701 | 'Hoke': {'pop': 46952, 'tracts': 9}, 1702 | 'Hyde': {'pop': 5810, 'tracts': 2}, 1703 | 'Iredell': {'pop': 159437, 'tracts': 44}, 1704 | 'Jackson': {'pop': 40271, 'tracts': 9}, 1705 | 'Johnston': {'pop': 168878, 'tracts': 25}, 1706 | 'Jones': {'pop': 10153, 'tracts': 3}, 1707 | 'Lee': {'pop': 57866, 'tracts': 13}, 1708 | 'Lenoir': {'pop': 59495, 'tracts': 15}, 1709 | 'Lincoln': {'pop': 78265, 'tracts': 18}, 1710 | 'Macon': {'pop': 33922, 'tracts': 9}, 1711 | 'Madison': {'pop': 20764, 'tracts': 6}, 1712 | 'Martin': {'pop': 24505, 'tracts': 6}, 1713 | 'McDowell': {'pop': 44996, 'tracts': 10}, 1714 | 'Mecklenburg': {'pop': 919628, 'tracts': 233}, 1715 | 'Mitchell': {'pop': 15579, 'tracts': 4}, 1716 | 'Montgomery': {'pop': 27798, 'tracts': 6}, 1717 | 'Moore': {'pop': 88247, 'tracts': 18}, 1718 | 'Nash': {'pop': 95840, 'tracts': 18}, 1719 | 'New Hanover': {'pop': 202667, 'tracts': 45}, 1720 | 'Northampton': {'pop': 22099, 'tracts': 5}, 1721 | 'Onslow': {'pop': 177772, 'tracts': 32}, 1722 | 'Orange': {'pop': 133801, 'tracts': 28}, 1723 | 'Pamlico': {'pop': 13144, 'tracts': 4}, 1724 | 'Pasquotank': {'pop': 40661, 'tracts': 10}, 1725 | 'Pender': {'pop': 52217, 'tracts': 16}, 1726 | 'Perquimans': {'pop': 13453, 'tracts': 3}, 1727 | 'Person': {'pop': 39464, 'tracts': 7}, 1728 | 'Pitt': {'pop': 168148, 'tracts': 32}, 1729 | 'Polk': {'pop': 20510, 'tracts': 7}, 1730 | 'Randolph': {'pop': 141752, 'tracts': 28}, 1731 | 'Richmond': {'pop': 46639, 'tracts': 11}, 1732 | 'Robeson': {'pop': 134168, 'tracts': 31}, 1733 | 'Rockingham': {'pop': 93643, 'tracts': 21}, 1734 | 'Rowan': {'pop': 138428, 'tracts': 30}, 1735 | 'Rutherford': {'pop': 67810, 'tracts': 13}, 1736 | 'Sampson': {'pop': 63431, 'tracts': 11}, 1737 | 'Scotland': {'pop': 36157, 'tracts': 7}, 1738 | 'Stanly': {'pop': 60585, 'tracts': 13}, 1739 | 'Stokes': {'pop': 47401, 'tracts': 9}, 1740 | 'Surry': {'pop': 73673, 'tracts': 22}, 1741 | 'Swain': {'pop': 13981, 'tracts': 5}, 1742 | 'Transylvania': {'pop': 33090, 'tracts': 7}, 1743 | 'Tyrrell': {'pop': 4407, 'tracts': 1}, 1744 | 'Union': {'pop': 201292, 'tracts': 41}, 1745 | 'Vance': {'pop': 45422, 'tracts': 10}, 1746 | 'Wake': {'pop': 900993, 'tracts': 187}, 1747 | 'Warren': {'pop': 20972, 'tracts': 6}, 1748 | 'Washington': {'pop': 13228, 'tracts': 3}, 1749 | 'Watauga': {'pop': 51079, 'tracts': 13}, 1750 | 'Wayne': {'pop': 122623, 'tracts': 26}, 1751 | 'Wilkes': {'pop': 69340, 'tracts': 14}, 1752 | 'Wilson': {'pop': 81234, 'tracts': 19}, 1753 | 'Yadkin': {'pop': 38406, 'tracts': 7}, 1754 | 'Yancey': {'pop': 17818, 'tracts': 5}}, 1755 | 'ND': {'Adams': {'pop': 2343, 'tracts': 1}, 1756 | 'Barnes': {'pop': 11066, 'tracts': 4}, 1757 | 'Benson': {'pop': 6660, 'tracts': 4}, 1758 | 'Billings': {'pop': 783, 'tracts': 1}, 1759 | 'Bottineau': {'pop': 6429, 'tracts': 3}, 1760 | 'Bowman': {'pop': 3151, 'tracts': 2}, 1761 | 'Burke': {'pop': 1968, 'tracts': 1}, 1762 | 'Burleigh': {'pop': 81308, 'tracts': 19}, 1763 | 'Cass': {'pop': 149778, 'tracts': 33}, 1764 | 'Cavalier': {'pop': 3993, 'tracts': 2}, 1765 | 'Dickey': {'pop': 5289, 'tracts': 3}, 1766 | 'Divide': {'pop': 2071, 'tracts': 1}, 1767 | 'Dunn': {'pop': 3536, 'tracts': 1}, 1768 | 'Eddy': {'pop': 2385, 'tracts': 1}, 1769 | 'Emmons': {'pop': 3550, 'tracts': 1}, 1770 | 'Foster': {'pop': 3343, 'tracts': 1}, 1771 | 'Golden Valley': {'pop': 1680, 'tracts': 1}, 1772 | 'Grand Forks': {'pop': 66861, 'tracts': 18}, 1773 | 'Grant': {'pop': 2394, 'tracts': 1}, 1774 | 'Griggs': {'pop': 2420, 'tracts': 1}, 1775 | 'Hettinger': {'pop': 2477, 'tracts': 2}, 1776 | 'Kidder': {'pop': 2435, 'tracts': 1}, 1777 | 'LaMoure': {'pop': 4139, 'tracts': 2}, 1778 | 'Logan': {'pop': 1990, 'tracts': 1}, 1779 | 'McHenry': {'pop': 5395, 'tracts': 2}, 1780 | 'McIntosh': {'pop': 2809, 'tracts': 1}, 1781 | 'McKenzie': {'pop': 6360, 'tracts': 4}, 1782 | 'McLean': {'pop': 8962, 'tracts': 2}, 1783 | 'Mercer': {'pop': 8424, 'tracts': 3}, 1784 | 'Morton': {'pop': 27471, 'tracts': 5}, 1785 | 'Mountrail': {'pop': 7673, 'tracts': 3}, 1786 | 'Nelson': {'pop': 3126, 'tracts': 1}, 1787 | 'Oliver': {'pop': 1846, 'tracts': 1}, 1788 | 'Pembina': {'pop': 7413, 'tracts': 5}, 1789 | 'Pierce': {'pop': 4357, 'tracts': 2}, 1790 | 'Ramsey': {'pop': 11451, 'tracts': 3}, 1791 | 'Ransom': {'pop': 5457, 'tracts': 3}, 1792 | 'Renville': {'pop': 2470, 'tracts': 1}, 1793 | 'Richland': {'pop': 16321, 'tracts': 6}, 1794 | 'Rolette': {'pop': 13937, 'tracts': 4}, 1795 | 'Sargent': {'pop': 3829, 'tracts': 2}, 1796 | 'Sheridan': {'pop': 1321, 'tracts': 1}, 1797 | 'Sioux': {'pop': 4153, 'tracts': 2}, 1798 | 'Slope': {'pop': 727, 'tracts': 1}, 1799 | 'Stark': {'pop': 24199, 'tracts': 8}, 1800 | 'Steele': {'pop': 1975, 'tracts': 1}, 1801 | 'Stutsman': {'pop': 21100, 'tracts': 6}, 1802 | 'Towner': {'pop': 2246, 'tracts': 1}, 1803 | 'Traill': {'pop': 8121, 'tracts': 4}, 1804 | 'Walsh': {'pop': 11119, 'tracts': 6}, 1805 | 'Ward': {'pop': 61675, 'tracts': 13}, 1806 | 'Wells': {'pop': 4207, 'tracts': 2}, 1807 | 'Williams': {'pop': 22398, 'tracts': 7}}, 1808 | 'NE': {'Adams': {'pop': 31364, 'tracts': 9}, 1809 | 'Antelope': {'pop': 6685, 'tracts': 3}, 1810 | 'Arthur': {'pop': 460, 'tracts': 1}, 1811 | 'Banner': {'pop': 690, 'tracts': 1}, 1812 | 'Blaine': {'pop': 478, 'tracts': 1}, 1813 | 'Boone': {'pop': 5505, 'tracts': 2}, 1814 | 'Box Butte': {'pop': 11308, 'tracts': 3}, 1815 | 'Boyd': {'pop': 2099, 'tracts': 1}, 1816 | 'Brown': {'pop': 3145, 'tracts': 1}, 1817 | 'Buffalo': {'pop': 46102, 'tracts': 11}, 1818 | 'Burt': {'pop': 6858, 'tracts': 3}, 1819 | 'Butler': {'pop': 8395, 'tracts': 3}, 1820 | 'Cass': {'pop': 25241, 'tracts': 6}, 1821 | 'Cedar': {'pop': 8852, 'tracts': 2}, 1822 | 'Chase': {'pop': 3966, 'tracts': 1}, 1823 | 'Cherry': {'pop': 5713, 'tracts': 2}, 1824 | 'Cheyenne': {'pop': 9998, 'tracts': 3}, 1825 | 'Clay': {'pop': 6542, 'tracts': 2}, 1826 | 'Colfax': {'pop': 10515, 'tracts': 3}, 1827 | 'Cuming': {'pop': 9139, 'tracts': 3}, 1828 | 'Custer': {'pop': 10939, 'tracts': 4}, 1829 | 'Dakota': {'pop': 21006, 'tracts': 4}, 1830 | 'Dawes': {'pop': 9182, 'tracts': 2}, 1831 | 'Dawson': {'pop': 24326, 'tracts': 7}, 1832 | 'Deuel': {'pop': 1941, 'tracts': 1}, 1833 | 'Dixon': {'pop': 6000, 'tracts': 2}, 1834 | 'Dodge': {'pop': 36691, 'tracts': 9}, 1835 | 'Douglas': {'pop': 517110, 'tracts': 156}, 1836 | 'Dundy': {'pop': 2008, 'tracts': 1}, 1837 | 'Fillmore': {'pop': 5890, 'tracts': 2}, 1838 | 'Franklin': {'pop': 3225, 'tracts': 2}, 1839 | 'Frontier': {'pop': 2756, 'tracts': 1}, 1840 | 'Furnas': {'pop': 4959, 'tracts': 1}, 1841 | 'Gage': {'pop': 22311, 'tracts': 7}, 1842 | 'Garden': {'pop': 2057, 'tracts': 1}, 1843 | 'Garfield': {'pop': 2049, 'tracts': 1}, 1844 | 'Gosper': {'pop': 2044, 'tracts': 1}, 1845 | 'Grant': {'pop': 614, 'tracts': 1}, 1846 | 'Greeley': {'pop': 2538, 'tracts': 1}, 1847 | 'Hall': {'pop': 58607, 'tracts': 14}, 1848 | 'Hamilton': {'pop': 9124, 'tracts': 3}, 1849 | 'Harlan': {'pop': 3423, 'tracts': 1}, 1850 | 'Hayes': {'pop': 967, 'tracts': 1}, 1851 | 'Hitchcock': {'pop': 2908, 'tracts': 1}, 1852 | 'Holt': {'pop': 10435, 'tracts': 4}, 1853 | 'Hooker': {'pop': 736, 'tracts': 1}, 1854 | 'Howard': {'pop': 6274, 'tracts': 2}, 1855 | 'Jefferson': {'pop': 7547, 'tracts': 3}, 1856 | 'Johnson': {'pop': 5217, 'tracts': 2}, 1857 | 'Kearney': {'pop': 6489, 'tracts': 2}, 1858 | 'Keith': {'pop': 8368, 'tracts': 3}, 1859 | 'Keya Paha': {'pop': 824, 'tracts': 1}, 1860 | 'Kimball': {'pop': 3821, 'tracts': 1}, 1861 | 'Knox': {'pop': 8701, 'tracts': 3}, 1862 | 'Lancaster': {'pop': 285407, 'tracts': 74}, 1863 | 'Lincoln': {'pop': 36288, 'tracts': 8}, 1864 | 'Logan': {'pop': 763, 'tracts': 1}, 1865 | 'Loup': {'pop': 632, 'tracts': 1}, 1866 | 'Madison': {'pop': 34876, 'tracts': 9}, 1867 | 'McPherson': {'pop': 539, 'tracts': 1}, 1868 | 'Merrick': {'pop': 7845, 'tracts': 3}, 1869 | 'Morrill': {'pop': 5042, 'tracts': 1}, 1870 | 'Nance': {'pop': 3735, 'tracts': 1}, 1871 | 'Nemaha': {'pop': 7248, 'tracts': 2}, 1872 | 'Nuckolls': {'pop': 4500, 'tracts': 2}, 1873 | 'Otoe': {'pop': 15740, 'tracts': 5}, 1874 | 'Pawnee': {'pop': 2773, 'tracts': 1}, 1875 | 'Perkins': {'pop': 2970, 'tracts': 1}, 1876 | 'Phelps': {'pop': 9188, 'tracts': 3}, 1877 | 'Pierce': {'pop': 7266, 'tracts': 2}, 1878 | 'Platte': {'pop': 32237, 'tracts': 7}, 1879 | 'Polk': {'pop': 5406, 'tracts': 2}, 1880 | 'Red Willow': {'pop': 11055, 'tracts': 3}, 1881 | 'Richardson': {'pop': 8363, 'tracts': 3}, 1882 | 'Rock': {'pop': 1526, 'tracts': 1}, 1883 | 'Saline': {'pop': 14200, 'tracts': 4}, 1884 | 'Sarpy': {'pop': 158840, 'tracts': 43}, 1885 | 'Saunders': {'pop': 20780, 'tracts': 5}, 1886 | 'Scotts Bluff': {'pop': 36970, 'tracts': 11}, 1887 | 'Seward': {'pop': 16750, 'tracts': 4}, 1888 | 'Sheridan': {'pop': 5469, 'tracts': 2}, 1889 | 'Sherman': {'pop': 3152, 'tracts': 1}, 1890 | 'Sioux': {'pop': 1311, 'tracts': 1}, 1891 | 'Stanton': {'pop': 6129, 'tracts': 2}, 1892 | 'Thayer': {'pop': 5228, 'tracts': 2}, 1893 | 'Thomas': {'pop': 647, 'tracts': 1}, 1894 | 'Thurston': {'pop': 6940, 'tracts': 2}, 1895 | 'Valley': {'pop': 4260, 'tracts': 2}, 1896 | 'Washington': {'pop': 20234, 'tracts': 5}, 1897 | 'Wayne': {'pop': 9595, 'tracts': 2}, 1898 | 'Webster': {'pop': 3812, 'tracts': 2}, 1899 | 'Wheeler': {'pop': 818, 'tracts': 1}, 1900 | 'York': {'pop': 13665, 'tracts': 4}}, 1901 | 'NH': {'Belknap': {'pop': 60088, 'tracts': 15}, 1902 | 'Carroll': {'pop': 47818, 'tracts': 11}, 1903 | 'Cheshire': {'pop': 77117, 'tracts': 16}, 1904 | 'Coos': {'pop': 33055, 'tracts': 11}, 1905 | 'Grafton': {'pop': 89118, 'tracts': 19}, 1906 | 'Hillsborough': {'pop': 400721, 'tracts': 86}, 1907 | 'Merrimack': {'pop': 146445, 'tracts': 36}, 1908 | 'Rockingham': {'pop': 295223, 'tracts': 66}, 1909 | 'Strafford': {'pop': 123143, 'tracts': 25}, 1910 | 'Sullivan': {'pop': 43742, 'tracts': 10}}, 1911 | 'NJ': {'Atlantic': {'pop': 274549, 'tracts': 69}, 1912 | 'Bergen': {'pop': 905116, 'tracts': 179}, 1913 | 'Burlington': {'pop': 448734, 'tracts': 114}, 1914 | 'Camden': {'pop': 513657, 'tracts': 127}, 1915 | 'Cape May': {'pop': 97265, 'tracts': 32}, 1916 | 'Cumberland': {'pop': 156898, 'tracts': 35}, 1917 | 'Essex': {'pop': 783969, 'tracts': 210}, 1918 | 'Gloucester': {'pop': 288288, 'tracts': 63}, 1919 | 'Hudson': {'pop': 634266, 'tracts': 166}, 1920 | 'Hunterdon': {'pop': 128349, 'tracts': 26}, 1921 | 'Mercer': {'pop': 366513, 'tracts': 77}, 1922 | 'Middlesex': {'pop': 809858, 'tracts': 175}, 1923 | 'Monmouth': {'pop': 630380, 'tracts': 144}, 1924 | 'Morris': {'pop': 492276, 'tracts': 100}, 1925 | 'Ocean': {'pop': 576567, 'tracts': 126}, 1926 | 'Passaic': {'pop': 501226, 'tracts': 100}, 1927 | 'Salem': {'pop': 66083, 'tracts': 24}, 1928 | 'Somerset': {'pop': 323444, 'tracts': 68}, 1929 | 'Sussex': {'pop': 149265, 'tracts': 41}, 1930 | 'Union': {'pop': 536499, 'tracts': 108}, 1931 | 'Warren': {'pop': 108692, 'tracts': 23}}, 1932 | 'NM': {'Bernalillo': {'pop': 662564, 'tracts': 153}, 1933 | 'Catron': {'pop': 3725, 'tracts': 1}, 1934 | 'Chaves': {'pop': 65645, 'tracts': 16}, 1935 | 'Cibola': {'pop': 27213, 'tracts': 7}, 1936 | 'Colfax': {'pop': 13750, 'tracts': 3}, 1937 | 'Curry': {'pop': 48376, 'tracts': 12}, 1938 | 'De Baca': {'pop': 2022, 'tracts': 1}, 1939 | 'Dona Ana': {'pop': 209233, 'tracts': 41}, 1940 | 'Eddy': {'pop': 53829, 'tracts': 12}, 1941 | 'Grant': {'pop': 29514, 'tracts': 8}, 1942 | 'Guadalupe': {'pop': 4687, 'tracts': 1}, 1943 | 'Harding': {'pop': 695, 'tracts': 1}, 1944 | 'Hidalgo': {'pop': 4894, 'tracts': 2}, 1945 | 'Lea': {'pop': 64727, 'tracts': 18}, 1946 | 'Lincoln': {'pop': 20497, 'tracts': 5}, 1947 | 'Los Alamos': {'pop': 17950, 'tracts': 4}, 1948 | 'Luna': {'pop': 25095, 'tracts': 6}, 1949 | 'McKinley': {'pop': 71492, 'tracts': 17}, 1950 | 'Mora': {'pop': 4881, 'tracts': 1}, 1951 | 'Otero': {'pop': 63797, 'tracts': 16}, 1952 | 'Quay': {'pop': 9041, 'tracts': 3}, 1953 | 'Rio Arriba': {'pop': 40246, 'tracts': 9}, 1954 | 'Roosevelt': {'pop': 19846, 'tracts': 5}, 1955 | 'San Juan': {'pop': 130044, 'tracts': 33}, 1956 | 'San Miguel': {'pop': 29393, 'tracts': 7}, 1957 | 'Sandoval': {'pop': 131561, 'tracts': 28}, 1958 | 'Santa Fe': {'pop': 144170, 'tracts': 50}, 1959 | 'Sierra': {'pop': 11988, 'tracts': 4}, 1960 | 'Socorro': {'pop': 17866, 'tracts': 6}, 1961 | 'Taos': {'pop': 32937, 'tracts': 6}, 1962 | 'Torrance': {'pop': 16383, 'tracts': 4}, 1963 | 'Union': {'pop': 4549, 'tracts': 1}, 1964 | 'Valencia': {'pop': 76569, 'tracts': 18}}, 1965 | 'NV': {'Carson City': {'pop': 55274, 'tracts': 14}, 1966 | 'Churchill': {'pop': 24877, 'tracts': 7}, 1967 | 'Clark': {'pop': 1951269, 'tracts': 487}, 1968 | 'Douglas': {'pop': 46997, 'tracts': 17}, 1969 | 'Elko': {'pop': 48818, 'tracts': 14}, 1970 | 'Esmeralda': {'pop': 783, 'tracts': 1}, 1971 | 'Eureka': {'pop': 1987, 'tracts': 1}, 1972 | 'Humboldt': {'pop': 16528, 'tracts': 4}, 1973 | 'Lander': {'pop': 5775, 'tracts': 1}, 1974 | 'Lincoln': {'pop': 5345, 'tracts': 2}, 1975 | 'Lyon': {'pop': 51980, 'tracts': 10}, 1976 | 'Mineral': {'pop': 4772, 'tracts': 2}, 1977 | 'Nye': {'pop': 43946, 'tracts': 10}, 1978 | 'Pershing': {'pop': 6753, 'tracts': 1}, 1979 | 'Storey': {'pop': 4010, 'tracts': 1}, 1980 | 'Washoe': {'pop': 421407, 'tracts': 112}, 1981 | 'White Pine': {'pop': 10030, 'tracts': 3}}, 1982 | 'NY': {'Albany': {'pop': 304204, 'tracts': 75}, 1983 | 'Allegany': {'pop': 48946, 'tracts': 13}, 1984 | 'Bronx': {'pop': 1385108, 'tracts': 339}, 1985 | 'Broome': {'pop': 200600, 'tracts': 55}, 1986 | 'Cattaraugus': {'pop': 80317, 'tracts': 21}, 1987 | 'Cayuga': {'pop': 80026, 'tracts': 20}, 1988 | 'Chautauqua': {'pop': 134905, 'tracts': 35}, 1989 | 'Chemung': {'pop': 88830, 'tracts': 22}, 1990 | 'Chenango': {'pop': 50477, 'tracts': 12}, 1991 | 'Clinton': {'pop': 82128, 'tracts': 19}, 1992 | 'Columbia': {'pop': 63096, 'tracts': 21}, 1993 | 'Cortland': {'pop': 49336, 'tracts': 12}, 1994 | 'Delaware': {'pop': 47980, 'tracts': 14}, 1995 | 'Dutchess': {'pop': 297488, 'tracts': 79}, 1996 | 'Erie': {'pop': 919040, 'tracts': 237}, 1997 | 'Essex': {'pop': 39370, 'tracts': 13}, 1998 | 'Franklin': {'pop': 51599, 'tracts': 14}, 1999 | 'Fulton': {'pop': 55531, 'tracts': 15}, 2000 | 'Genesee': {'pop': 60079, 'tracts': 15}, 2001 | 'Greene': {'pop': 49221, 'tracts': 15}, 2002 | 'Hamilton': {'pop': 4836, 'tracts': 4}, 2003 | 'Herkimer': {'pop': 64519, 'tracts': 19}, 2004 | 'Jefferson': {'pop': 116229, 'tracts': 26}, 2005 | 'Kings': {'pop': 2504700, 'tracts': 760}, 2006 | 'Lewis': {'pop': 27087, 'tracts': 7}, 2007 | 'Livingston': {'pop': 65393, 'tracts': 15}, 2008 | 'Madison': {'pop': 73442, 'tracts': 16}, 2009 | 'Monroe': {'pop': 744344, 'tracts': 192}, 2010 | 'Montgomery': {'pop': 50219, 'tracts': 16}, 2011 | 'Nassau': {'pop': 1339532, 'tracts': 280}, 2012 | 'New York': {'pop': 1585873, 'tracts': 288}, 2013 | 'Niagara': {'pop': 216469, 'tracts': 61}, 2014 | 'Oneida': {'pop': 234878, 'tracts': 74}, 2015 | 'Onondaga': {'pop': 467026, 'tracts': 140}, 2016 | 'Ontario': {'pop': 107931, 'tracts': 25}, 2017 | 'Orange': {'pop': 372813, 'tracts': 79}, 2018 | 'Orleans': {'pop': 42883, 'tracts': 11}, 2019 | 'Oswego': {'pop': 122109, 'tracts': 29}, 2020 | 'Otsego': {'pop': 62259, 'tracts': 17}, 2021 | 'Putnam': {'pop': 99710, 'tracts': 19}, 2022 | 'Queens': {'pop': 2230722, 'tracts': 669}, 2023 | 'Rensselaer': {'pop': 159429, 'tracts': 42}, 2024 | 'Richmond': {'pop': 468730, 'tracts': 109}, 2025 | 'Rockland': {'pop': 311687, 'tracts': 65}, 2026 | 'Saratoga': {'pop': 219607, 'tracts': 50}, 2027 | 'Schenectady': {'pop': 154727, 'tracts': 43}, 2028 | 'Schoharie': {'pop': 32749, 'tracts': 8}, 2029 | 'Schuyler': {'pop': 18343, 'tracts': 5}, 2030 | 'Seneca': {'pop': 35251, 'tracts': 10}, 2031 | 'St. Lawrence': {'pop': 111944, 'tracts': 28}, 2032 | 'Steuben': {'pop': 98990, 'tracts': 30}, 2033 | 'Suffolk': {'pop': 1493350, 'tracts': 322}, 2034 | 'Sullivan': {'pop': 77547, 'tracts': 24}, 2035 | 'Tioga': {'pop': 51125, 'tracts': 10}, 2036 | 'Tompkins': {'pop': 101564, 'tracts': 23}, 2037 | 'Ulster': {'pop': 182493, 'tracts': 47}, 2038 | 'Warren': {'pop': 65707, 'tracts': 19}, 2039 | 'Washington': {'pop': 63216, 'tracts': 17}, 2040 | 'Wayne': {'pop': 93772, 'tracts': 23}, 2041 | 'Westchester': {'pop': 949113, 'tracts': 223}, 2042 | 'Wyoming': {'pop': 42155, 'tracts': 11}, 2043 | 'Yates': {'pop': 25348, 'tracts': 5}}, 2044 | 'OH': {'Adams': {'pop': 28550, 'tracts': 6}, 2045 | 'Allen': {'pop': 106331, 'tracts': 33}, 2046 | 'Ashland': {'pop': 53139, 'tracts': 11}, 2047 | 'Ashtabula': {'pop': 101497, 'tracts': 25}, 2048 | 'Athens': {'pop': 64757, 'tracts': 15}, 2049 | 'Auglaize': {'pop': 45949, 'tracts': 11}, 2050 | 'Belmont': {'pop': 70400, 'tracts': 20}, 2051 | 'Brown': {'pop': 44846, 'tracts': 9}, 2052 | 'Butler': {'pop': 368130, 'tracts': 80}, 2053 | 'Carroll': {'pop': 28836, 'tracts': 7}, 2054 | 'Champaign': {'pop': 40097, 'tracts': 10}, 2055 | 'Clark': {'pop': 138333, 'tracts': 44}, 2056 | 'Clermont': {'pop': 197363, 'tracts': 40}, 2057 | 'Clinton': {'pop': 42040, 'tracts': 9}, 2058 | 'Columbiana': {'pop': 107841, 'tracts': 24}, 2059 | 'Coshocton': {'pop': 36901, 'tracts': 10}, 2060 | 'Crawford': {'pop': 43784, 'tracts': 13}, 2061 | 'Cuyahoga': {'pop': 1280122, 'tracts': 447}, 2062 | 'Darke': {'pop': 52959, 'tracts': 12}, 2063 | 'Defiance': {'pop': 39037, 'tracts': 9}, 2064 | 'Delaware': {'pop': 174214, 'tracts': 35}, 2065 | 'Erie': {'pop': 77079, 'tracts': 19}, 2066 | 'Fairfield': {'pop': 146156, 'tracts': 28}, 2067 | 'Fayette': {'pop': 29030, 'tracts': 7}, 2068 | 'Franklin': {'pop': 1163414, 'tracts': 284}, 2069 | 'Fulton': {'pop': 42698, 'tracts': 9}, 2070 | 'Gallia': {'pop': 30934, 'tracts': 7}, 2071 | 'Geauga': {'pop': 93389, 'tracts': 21}, 2072 | 'Greene': {'pop': 161573, 'tracts': 35}, 2073 | 'Guernsey': {'pop': 40087, 'tracts': 10}, 2074 | 'Hamilton': {'pop': 802374, 'tracts': 222}, 2075 | 'Hancock': {'pop': 74782, 'tracts': 13}, 2076 | 'Hardin': {'pop': 32058, 'tracts': 7}, 2077 | 'Harrison': {'pop': 15864, 'tracts': 5}, 2078 | 'Henry': {'pop': 28215, 'tracts': 7}, 2079 | 'Highland': {'pop': 43589, 'tracts': 9}, 2080 | 'Hocking': {'pop': 29380, 'tracts': 7}, 2081 | 'Holmes': {'pop': 42366, 'tracts': 8}, 2082 | 'Huron': {'pop': 59626, 'tracts': 13}, 2083 | 'Jackson': {'pop': 33225, 'tracts': 7}, 2084 | 'Jefferson': {'pop': 69709, 'tracts': 23}, 2085 | 'Knox': {'pop': 60921, 'tracts': 12}, 2086 | 'Lake': {'pop': 230041, 'tracts': 59}, 2087 | 'Lawrence': {'pop': 62450, 'tracts': 16}, 2088 | 'Licking': {'pop': 166492, 'tracts': 32}, 2089 | 'Logan': {'pop': 45858, 'tracts': 11}, 2090 | 'Lorain': {'pop': 301356, 'tracts': 73}, 2091 | 'Lucas': {'pop': 441815, 'tracts': 127}, 2092 | 'Madison': {'pop': 43435, 'tracts': 12}, 2093 | 'Mahoning': {'pop': 238823, 'tracts': 70}, 2094 | 'Marion': {'pop': 66501, 'tracts': 18}, 2095 | 'Medina': {'pop': 172332, 'tracts': 37}, 2096 | 'Meigs': {'pop': 23770, 'tracts': 6}, 2097 | 'Mercer': {'pop': 40814, 'tracts': 9}, 2098 | 'Miami': {'pop': 102506, 'tracts': 21}, 2099 | 'Monroe': {'pop': 14642, 'tracts': 4}, 2100 | 'Montgomery': {'pop': 535153, 'tracts': 153}, 2101 | 'Morgan': {'pop': 15054, 'tracts': 4}, 2102 | 'Morrow': {'pop': 34827, 'tracts': 6}, 2103 | 'Muskingum': {'pop': 86074, 'tracts': 19}, 2104 | 'Noble': {'pop': 14645, 'tracts': 3}, 2105 | 'Ottawa': {'pop': 41428, 'tracts': 13}, 2106 | 'Paulding': {'pop': 19614, 'tracts': 5}, 2107 | 'Perry': {'pop': 36058, 'tracts': 6}, 2108 | 'Pickaway': {'pop': 55698, 'tracts': 13}, 2109 | 'Pike': {'pop': 28709, 'tracts': 6}, 2110 | 'Portage': {'pop': 161419, 'tracts': 35}, 2111 | 'Preble': {'pop': 42270, 'tracts': 12}, 2112 | 'Putnam': {'pop': 34499, 'tracts': 7}, 2113 | 'Richland': {'pop': 124475, 'tracts': 30}, 2114 | 'Ross': {'pop': 78064, 'tracts': 17}, 2115 | 'Sandusky': {'pop': 60944, 'tracts': 15}, 2116 | 'Scioto': {'pop': 79499, 'tracts': 20}, 2117 | 'Seneca': {'pop': 56745, 'tracts': 14}, 2118 | 'Shelby': {'pop': 49423, 'tracts': 10}, 2119 | 'Stark': {'pop': 375586, 'tracts': 86}, 2120 | 'Summit': {'pop': 541781, 'tracts': 135}, 2121 | 'Trumbull': {'pop': 210312, 'tracts': 55}, 2122 | 'Tuscarawas': {'pop': 92582, 'tracts': 21}, 2123 | 'Union': {'pop': 52300, 'tracts': 10}, 2124 | 'Van Wert': {'pop': 28744, 'tracts': 9}, 2125 | 'Vinton': {'pop': 13435, 'tracts': 3}, 2126 | 'Warren': {'pop': 212693, 'tracts': 33}, 2127 | 'Washington': {'pop': 61778, 'tracts': 16}, 2128 | 'Wayne': {'pop': 114520, 'tracts': 32}, 2129 | 'Williams': {'pop': 37642, 'tracts': 9}, 2130 | 'Wood': {'pop': 125488, 'tracts': 28}, 2131 | 'Wyandot': {'pop': 22615, 'tracts': 6}}, 2132 | 'OK': {'Adair': {'pop': 22683, 'tracts': 5}, 2133 | 'Alfalfa': {'pop': 5642, 'tracts': 3}, 2134 | 'Atoka': {'pop': 14182, 'tracts': 4}, 2135 | 'Beaver': {'pop': 5636, 'tracts': 3}, 2136 | 'Beckham': {'pop': 22119, 'tracts': 4}, 2137 | 'Blaine': {'pop': 11943, 'tracts': 5}, 2138 | 'Bryan': {'pop': 42416, 'tracts': 11}, 2139 | 'Caddo': {'pop': 29600, 'tracts': 8}, 2140 | 'Canadian': {'pop': 115541, 'tracts': 29}, 2141 | 'Carter': {'pop': 47557, 'tracts': 11}, 2142 | 'Cherokee': {'pop': 46987, 'tracts': 9}, 2143 | 'Choctaw': {'pop': 15205, 'tracts': 5}, 2144 | 'Cimarron': {'pop': 2475, 'tracts': 2}, 2145 | 'Cleveland': {'pop': 255755, 'tracts': 62}, 2146 | 'Coal': {'pop': 5925, 'tracts': 2}, 2147 | 'Comanche': {'pop': 124098, 'tracts': 32}, 2148 | 'Cotton': {'pop': 6193, 'tracts': 2}, 2149 | 'Craig': {'pop': 15029, 'tracts': 5}, 2150 | 'Creek': {'pop': 69967, 'tracts': 21}, 2151 | 'Custer': {'pop': 27469, 'tracts': 5}, 2152 | 'Delaware': {'pop': 41487, 'tracts': 9}, 2153 | 'Dewey': {'pop': 4810, 'tracts': 3}, 2154 | 'Ellis': {'pop': 4151, 'tracts': 2}, 2155 | 'Garfield': {'pop': 60580, 'tracts': 12}, 2156 | 'Garvin': {'pop': 27576, 'tracts': 9}, 2157 | 'Grady': {'pop': 52431, 'tracts': 10}, 2158 | 'Grant': {'pop': 4527, 'tracts': 2}, 2159 | 'Greer': {'pop': 6239, 'tracts': 2}, 2160 | 'Harmon': {'pop': 2922, 'tracts': 1}, 2161 | 'Harper': {'pop': 3685, 'tracts': 2}, 2162 | 'Haskell': {'pop': 12769, 'tracts': 4}, 2163 | 'Hughes': {'pop': 14003, 'tracts': 5}, 2164 | 'Jackson': {'pop': 26446, 'tracts': 8}, 2165 | 'Jefferson': {'pop': 6472, 'tracts': 3}, 2166 | 'Johnston': {'pop': 10957, 'tracts': 3}, 2167 | 'Kay': {'pop': 46562, 'tracts': 11}, 2168 | 'Kingfisher': {'pop': 15034, 'tracts': 4}, 2169 | 'Kiowa': {'pop': 9446, 'tracts': 3}, 2170 | 'Latimer': {'pop': 11154, 'tracts': 3}, 2171 | 'Le Flore': {'pop': 50384, 'tracts': 12}, 2172 | 'Lincoln': {'pop': 34273, 'tracts': 7}, 2173 | 'Logan': {'pop': 41848, 'tracts': 8}, 2174 | 'Love': {'pop': 9423, 'tracts': 3}, 2175 | 'Major': {'pop': 7527, 'tracts': 3}, 2176 | 'Marshall': {'pop': 15840, 'tracts': 4}, 2177 | 'Mayes': {'pop': 41259, 'tracts': 9}, 2178 | 'McClain': {'pop': 34506, 'tracts': 6}, 2179 | 'McCurtain': {'pop': 33151, 'tracts': 8}, 2180 | 'McIntosh': {'pop': 20252, 'tracts': 6}, 2181 | 'Murray': {'pop': 13488, 'tracts': 3}, 2182 | 'Muskogee': {'pop': 70990, 'tracts': 16}, 2183 | 'Noble': {'pop': 11561, 'tracts': 4}, 2184 | 'Nowata': {'pop': 10536, 'tracts': 4}, 2185 | 'Okfuskee': {'pop': 12191, 'tracts': 4}, 2186 | 'Oklahoma': {'pop': 718633, 'tracts': 241}, 2187 | 'Okmulgee': {'pop': 40069, 'tracts': 10}, 2188 | 'Osage': {'pop': 47472, 'tracts': 11}, 2189 | 'Ottawa': {'pop': 31848, 'tracts': 9}, 2190 | 'Pawnee': {'pop': 16577, 'tracts': 5}, 2191 | 'Payne': {'pop': 77350, 'tracts': 17}, 2192 | 'Pittsburg': {'pop': 45837, 'tracts': 13}, 2193 | 'Pontotoc': {'pop': 37492, 'tracts': 10}, 2194 | 'Pottawatomie': {'pop': 69442, 'tracts': 16}, 2195 | 'Pushmataha': {'pop': 11572, 'tracts': 3}, 2196 | 'Roger Mills': {'pop': 3647, 'tracts': 1}, 2197 | 'Rogers': {'pop': 86905, 'tracts': 28}, 2198 | 'Seminole': {'pop': 25482, 'tracts': 9}, 2199 | 'Sequoyah': {'pop': 42391, 'tracts': 9}, 2200 | 'Stephens': {'pop': 45048, 'tracts': 11}, 2201 | 'Texas': {'pop': 20640, 'tracts': 5}, 2202 | 'Tillman': {'pop': 7992, 'tracts': 5}, 2203 | 'Tulsa': {'pop': 603403, 'tracts': 175}, 2204 | 'Wagoner': {'pop': 73085, 'tracts': 22}, 2205 | 'Washington': {'pop': 50976, 'tracts': 13}, 2206 | 'Washita': {'pop': 11629, 'tracts': 4}, 2207 | 'Woods': {'pop': 8878, 'tracts': 3}, 2208 | 'Woodward': {'pop': 20081, 'tracts': 5}}, 2209 | 'OR': {'Baker': {'pop': 16134, 'tracts': 6}, 2210 | 'Benton': {'pop': 85579, 'tracts': 18}, 2211 | 'Clackamas': {'pop': 375992, 'tracts': 80}, 2212 | 'Clatsop': {'pop': 37039, 'tracts': 12}, 2213 | 'Columbia': {'pop': 49351, 'tracts': 10}, 2214 | 'Coos': {'pop': 63043, 'tracts': 13}, 2215 | 'Crook': {'pop': 20978, 'tracts': 4}, 2216 | 'Curry': {'pop': 22364, 'tracts': 6}, 2217 | 'Deschutes': {'pop': 157733, 'tracts': 24}, 2218 | 'Douglas': {'pop': 107667, 'tracts': 22}, 2219 | 'Gilliam': {'pop': 1871, 'tracts': 1}, 2220 | 'Grant': {'pop': 7445, 'tracts': 2}, 2221 | 'Harney': {'pop': 7422, 'tracts': 2}, 2222 | 'Hood River': {'pop': 22346, 'tracts': 4}, 2223 | 'Jackson': {'pop': 203206, 'tracts': 41}, 2224 | 'Jefferson': {'pop': 21720, 'tracts': 6}, 2225 | 'Josephine': {'pop': 82713, 'tracts': 16}, 2226 | 'Klamath': {'pop': 66380, 'tracts': 20}, 2227 | 'Lake': {'pop': 7895, 'tracts': 2}, 2228 | 'Lane': {'pop': 351715, 'tracts': 86}, 2229 | 'Lincoln': {'pop': 46034, 'tracts': 18}, 2230 | 'Linn': {'pop': 116672, 'tracts': 21}, 2231 | 'Malheur': {'pop': 31313, 'tracts': 8}, 2232 | 'Marion': {'pop': 315335, 'tracts': 58}, 2233 | 'Morrow': {'pop': 11173, 'tracts': 2}, 2234 | 'Multnomah': {'pop': 735334, 'tracts': 171}, 2235 | 'Polk': {'pop': 75403, 'tracts': 12}, 2236 | 'Sherman': {'pop': 1765, 'tracts': 1}, 2237 | 'Tillamook': {'pop': 25250, 'tracts': 8}, 2238 | 'Umatilla': {'pop': 75889, 'tracts': 15}, 2239 | 'Union': {'pop': 25748, 'tracts': 8}, 2240 | 'Wallowa': {'pop': 7008, 'tracts': 3}, 2241 | 'Wasco': {'pop': 25213, 'tracts': 8}, 2242 | 'Washington': {'pop': 529710, 'tracts': 104}, 2243 | 'Wheeler': {'pop': 1441, 'tracts': 1}, 2244 | 'Yamhill': {'pop': 99193, 'tracts': 17}}, 2245 | 'PA': {'Adams': {'pop': 101407, 'tracts': 23}, 2246 | 'Allegheny': {'pop': 1223348, 'tracts': 402}, 2247 | 'Armstrong': {'pop': 68941, 'tracts': 19}, 2248 | 'Beaver': {'pop': 170539, 'tracts': 51}, 2249 | 'Bedford': {'pop': 49762, 'tracts': 11}, 2250 | 'Berks': {'pop': 411442, 'tracts': 90}, 2251 | 'Blair': {'pop': 127089, 'tracts': 34}, 2252 | 'Bradford': {'pop': 62622, 'tracts': 14}, 2253 | 'Bucks': {'pop': 625249, 'tracts': 143}, 2254 | 'Butler': {'pop': 183862, 'tracts': 44}, 2255 | 'Cambria': {'pop': 143679, 'tracts': 42}, 2256 | 'Cameron': {'pop': 5085, 'tracts': 2}, 2257 | 'Carbon': {'pop': 65249, 'tracts': 12}, 2258 | 'Centre': {'pop': 153990, 'tracts': 31}, 2259 | 'Chester': {'pop': 498886, 'tracts': 116}, 2260 | 'Clarion': {'pop': 39988, 'tracts': 10}, 2261 | 'Clearfield': {'pop': 81642, 'tracts': 20}, 2262 | 'Clinton': {'pop': 39238, 'tracts': 9}, 2263 | 'Columbia': {'pop': 67295, 'tracts': 15}, 2264 | 'Crawford': {'pop': 88765, 'tracts': 23}, 2265 | 'Cumberland': {'pop': 235406, 'tracts': 49}, 2266 | 'Dauphin': {'pop': 268100, 'tracts': 65}, 2267 | 'Delaware': {'pop': 558979, 'tracts': 144}, 2268 | 'Elk': {'pop': 31946, 'tracts': 9}, 2269 | 'Erie': {'pop': 280566, 'tracts': 72}, 2270 | 'Fayette': {'pop': 136606, 'tracts': 36}, 2271 | 'Forest': {'pop': 7716, 'tracts': 3}, 2272 | 'Franklin': {'pop': 149618, 'tracts': 27}, 2273 | 'Fulton': {'pop': 14845, 'tracts': 3}, 2274 | 'Greene': {'pop': 38686, 'tracts': 9}, 2275 | 'Huntingdon': {'pop': 45913, 'tracts': 12}, 2276 | 'Indiana': {'pop': 88880, 'tracts': 23}, 2277 | 'Jefferson': {'pop': 45200, 'tracts': 13}, 2278 | 'Juniata': {'pop': 24636, 'tracts': 5}, 2279 | 'Lackawanna': {'pop': 214437, 'tracts': 59}, 2280 | 'Lancaster': {'pop': 519445, 'tracts': 98}, 2281 | 'Lawrence': {'pop': 91108, 'tracts': 28}, 2282 | 'Lebanon': {'pop': 133568, 'tracts': 31}, 2283 | 'Lehigh': {'pop': 349497, 'tracts': 76}, 2284 | 'Luzerne': {'pop': 320918, 'tracts': 104}, 2285 | 'Lycoming': {'pop': 116111, 'tracts': 29}, 2286 | 'McKean': {'pop': 43450, 'tracts': 12}, 2287 | 'Mercer': {'pop': 116638, 'tracts': 30}, 2288 | 'Mifflin': {'pop': 46682, 'tracts': 12}, 2289 | 'Monroe': {'pop': 169842, 'tracts': 33}, 2290 | 'Montgomery': {'pop': 799874, 'tracts': 211}, 2291 | 'Montour': {'pop': 18267, 'tracts': 4}, 2292 | 'Northampton': {'pop': 297735, 'tracts': 68}, 2293 | 'Northumberland': {'pop': 94528, 'tracts': 24}, 2294 | 'Perry': {'pop': 45969, 'tracts': 10}, 2295 | 'Philadelphia': {'pop': 1526006, 'tracts': 384}, 2296 | 'Pike': {'pop': 57369, 'tracts': 18}, 2297 | 'Potter': {'pop': 17457, 'tracts': 5}, 2298 | 'Schuylkill': {'pop': 148289, 'tracts': 40}, 2299 | 'Snyder': {'pop': 39702, 'tracts': 8}, 2300 | 'Somerset': {'pop': 77742, 'tracts': 21}, 2301 | 'Sullivan': {'pop': 6428, 'tracts': 2}, 2302 | 'Susquehanna': {'pop': 43356, 'tracts': 11}, 2303 | 'Tioga': {'pop': 41981, 'tracts': 10}, 2304 | 'Union': {'pop': 44947, 'tracts': 10}, 2305 | 'Venango': {'pop': 54984, 'tracts': 16}, 2306 | 'Warren': {'pop': 41815, 'tracts': 13}, 2307 | 'Washington': {'pop': 207820, 'tracts': 59}, 2308 | 'Wayne': {'pop': 52822, 'tracts': 14}, 2309 | 'Westmoreland': {'pop': 365169, 'tracts': 100}, 2310 | 'Wyoming': {'pop': 28276, 'tracts': 7}, 2311 | 'York': {'pop': 434972, 'tracts': 90}}, 2312 | 'RI': {'Bristol': {'pop': 49875, 'tracts': 11}, 2313 | 'Kent': {'pop': 166158, 'tracts': 39}, 2314 | 'Newport': {'pop': 82888, 'tracts': 22}, 2315 | 'Providence': {'pop': 626667, 'tracts': 141}, 2316 | 'Washington': {'pop': 126979, 'tracts': 29}}, 2317 | 'SC': {'Abbeville': {'pop': 25417, 'tracts': 6}, 2318 | 'Aiken': {'pop': 160099, 'tracts': 33}, 2319 | 'Allendale': {'pop': 10419, 'tracts': 3}, 2320 | 'Anderson': {'pop': 187126, 'tracts': 39}, 2321 | 'Bamberg': {'pop': 15987, 'tracts': 4}, 2322 | 'Barnwell': {'pop': 22621, 'tracts': 6}, 2323 | 'Beaufort': {'pop': 162233, 'tracts': 41}, 2324 | 'Berkeley': {'pop': 177843, 'tracts': 45}, 2325 | 'Calhoun': {'pop': 15175, 'tracts': 3}, 2326 | 'Charleston': {'pop': 350209, 'tracts': 86}, 2327 | 'Cherokee': {'pop': 55342, 'tracts': 13}, 2328 | 'Chester': {'pop': 33140, 'tracts': 11}, 2329 | 'Chesterfield': {'pop': 46734, 'tracts': 10}, 2330 | 'Clarendon': {'pop': 34971, 'tracts': 12}, 2331 | 'Colleton': {'pop': 38892, 'tracts': 10}, 2332 | 'Darlington': {'pop': 68681, 'tracts': 16}, 2333 | 'Dillon': {'pop': 32062, 'tracts': 6}, 2334 | 'Dorchester': {'pop': 136555, 'tracts': 25}, 2335 | 'Edgefield': {'pop': 26985, 'tracts': 6}, 2336 | 'Fairfield': {'pop': 23956, 'tracts': 5}, 2337 | 'Florence': {'pop': 136885, 'tracts': 33}, 2338 | 'Georgetown': {'pop': 60158, 'tracts': 15}, 2339 | 'Greenville': {'pop': 451225, 'tracts': 111}, 2340 | 'Greenwood': {'pop': 69661, 'tracts': 14}, 2341 | 'Hampton': {'pop': 21090, 'tracts': 5}, 2342 | 'Horry': {'pop': 269291, 'tracts': 72}, 2343 | 'Jasper': {'pop': 24777, 'tracts': 5}, 2344 | 'Kershaw': {'pop': 61697, 'tracts': 15}, 2345 | 'Lancaster': {'pop': 76652, 'tracts': 14}, 2346 | 'Laurens': {'pop': 66537, 'tracts': 17}, 2347 | 'Lee': {'pop': 19220, 'tracts': 7}, 2348 | 'Lexington': {'pop': 262391, 'tracts': 74}, 2349 | 'Marion': {'pop': 33062, 'tracts': 8}, 2350 | 'Marlboro': {'pop': 28933, 'tracts': 7}, 2351 | 'McCormick': {'pop': 10233, 'tracts': 3}, 2352 | 'Newberry': {'pop': 37508, 'tracts': 8}, 2353 | 'Oconee': {'pop': 74273, 'tracts': 15}, 2354 | 'Orangeburg': {'pop': 92501, 'tracts': 20}, 2355 | 'Pickens': {'pop': 119224, 'tracts': 28}, 2356 | 'Richland': {'pop': 384504, 'tracts': 89}, 2357 | 'Saluda': {'pop': 19875, 'tracts': 5}, 2358 | 'Spartanburg': {'pop': 284307, 'tracts': 69}, 2359 | 'Sumter': {'pop': 107456, 'tracts': 23}, 2360 | 'Union': {'pop': 28961, 'tracts': 9}, 2361 | 'Williamsburg': {'pop': 34423, 'tracts': 11}, 2362 | 'York': {'pop': 226073, 'tracts': 46}}, 2363 | 'SD': {'Aurora': {'pop': 2710, 'tracts': 1}, 2364 | 'Beadle': {'pop': 17398, 'tracts': 6}, 2365 | 'Bennett': {'pop': 3431, 'tracts': 2}, 2366 | 'Bon Homme': {'pop': 7070, 'tracts': 2}, 2367 | 'Brookings': {'pop': 31965, 'tracts': 6}, 2368 | 'Brown': {'pop': 36531, 'tracts': 8}, 2369 | 'Brule': {'pop': 5255, 'tracts': 2}, 2370 | 'Buffalo': {'pop': 1912, 'tracts': 1}, 2371 | 'Butte': {'pop': 10110, 'tracts': 2}, 2372 | 'Campbell': {'pop': 1466, 'tracts': 1}, 2373 | 'Charles Mix': {'pop': 9129, 'tracts': 3}, 2374 | 'Clark': {'pop': 3691, 'tracts': 1}, 2375 | 'Clay': {'pop': 13864, 'tracts': 3}, 2376 | 'Codington': {'pop': 27227, 'tracts': 7}, 2377 | 'Corson': {'pop': 4050, 'tracts': 2}, 2378 | 'Custer': {'pop': 8216, 'tracts': 2}, 2379 | 'Davison': {'pop': 19504, 'tracts': 4}, 2380 | 'Day': {'pop': 5710, 'tracts': 3}, 2381 | 'Deuel': {'pop': 4364, 'tracts': 2}, 2382 | 'Dewey': {'pop': 5301, 'tracts': 2}, 2383 | 'Douglas': {'pop': 3002, 'tracts': 1}, 2384 | 'Edmunds': {'pop': 4071, 'tracts': 2}, 2385 | 'Fall River': {'pop': 7094, 'tracts': 2}, 2386 | 'Faulk': {'pop': 2364, 'tracts': 1}, 2387 | 'Grant': {'pop': 7356, 'tracts': 2}, 2388 | 'Gregory': {'pop': 4271, 'tracts': 2}, 2389 | 'Haakon': {'pop': 1937, 'tracts': 1}, 2390 | 'Hamlin': {'pop': 5903, 'tracts': 2}, 2391 | 'Hand': {'pop': 3431, 'tracts': 2}, 2392 | 'Hanson': {'pop': 3331, 'tracts': 1}, 2393 | 'Harding': {'pop': 1255, 'tracts': 1}, 2394 | 'Hughes': {'pop': 17022, 'tracts': 4}, 2395 | 'Hutchinson': {'pop': 7343, 'tracts': 3}, 2396 | 'Hyde': {'pop': 1420, 'tracts': 1}, 2397 | 'Jackson': {'pop': 3031, 'tracts': 2}, 2398 | 'Jerauld': {'pop': 2071, 'tracts': 1}, 2399 | 'Jones': {'pop': 1006, 'tracts': 1}, 2400 | 'Kingsbury': {'pop': 5148, 'tracts': 2}, 2401 | 'Lake': {'pop': 11200, 'tracts': 3}, 2402 | 'Lawrence': {'pop': 24097, 'tracts': 5}, 2403 | 'Lincoln': {'pop': 44828, 'tracts': 11}, 2404 | 'Lyman': {'pop': 3755, 'tracts': 2}, 2405 | 'Marshall': {'pop': 4656, 'tracts': 1}, 2406 | 'McCook': {'pop': 5618, 'tracts': 2}, 2407 | 'McPherson': {'pop': 2459, 'tracts': 1}, 2408 | 'Meade': {'pop': 25434, 'tracts': 5}, 2409 | 'Mellette': {'pop': 2048, 'tracts': 1}, 2410 | 'Miner': {'pop': 2389, 'tracts': 1}, 2411 | 'Minnehaha': {'pop': 169468, 'tracts': 42}, 2412 | 'Moody': {'pop': 6486, 'tracts': 2}, 2413 | 'Pennington': {'pop': 100948, 'tracts': 23}, 2414 | 'Perkins': {'pop': 2982, 'tracts': 1}, 2415 | 'Potter': {'pop': 2329, 'tracts': 1}, 2416 | 'Roberts': {'pop': 10149, 'tracts': 4}, 2417 | 'Sanborn': {'pop': 2355, 'tracts': 1}, 2418 | 'Shannon': {'pop': 13586, 'tracts': 3}, 2419 | 'Spink': {'pop': 6415, 'tracts': 3}, 2420 | 'Stanley': {'pop': 2966, 'tracts': 1}, 2421 | 'Sully': {'pop': 1373, 'tracts': 1}, 2422 | 'Todd': {'pop': 9612, 'tracts': 2}, 2423 | 'Tripp': {'pop': 5644, 'tracts': 2}, 2424 | 'Turner': {'pop': 8347, 'tracts': 2}, 2425 | 'Union': {'pop': 14399, 'tracts': 3}, 2426 | 'Walworth': {'pop': 5438, 'tracts': 2}, 2427 | 'Yankton': {'pop': 22438, 'tracts': 5}, 2428 | 'Ziebach': {'pop': 2801, 'tracts': 1}}, 2429 | 'TN': {'Anderson': {'pop': 75129, 'tracts': 18}, 2430 | 'Bedford': {'pop': 45058, 'tracts': 9}, 2431 | 'Benton': {'pop': 16489, 'tracts': 5}, 2432 | 'Bledsoe': {'pop': 12876, 'tracts': 3}, 2433 | 'Blount': {'pop': 123010, 'tracts': 28}, 2434 | 'Bradley': {'pop': 98963, 'tracts': 19}, 2435 | 'Campbell': {'pop': 40716, 'tracts': 11}, 2436 | 'Cannon': {'pop': 13801, 'tracts': 3}, 2437 | 'Carroll': {'pop': 28522, 'tracts': 8}, 2438 | 'Carter': {'pop': 57424, 'tracts': 17}, 2439 | 'Cheatham': {'pop': 39105, 'tracts': 9}, 2440 | 'Chester': {'pop': 17131, 'tracts': 3}, 2441 | 'Claiborne': {'pop': 32213, 'tracts': 9}, 2442 | 'Clay': {'pop': 7861, 'tracts': 2}, 2443 | 'Cocke': {'pop': 35662, 'tracts': 9}, 2444 | 'Coffee': {'pop': 52796, 'tracts': 12}, 2445 | 'Crockett': {'pop': 14586, 'tracts': 5}, 2446 | 'Cumberland': {'pop': 56053, 'tracts': 14}, 2447 | 'Davidson': {'pop': 626681, 'tracts': 161}, 2448 | 'DeKalb': {'pop': 18723, 'tracts': 4}, 2449 | 'Decatur': {'pop': 11757, 'tracts': 4}, 2450 | 'Dickson': {'pop': 49666, 'tracts': 10}, 2451 | 'Dyer': {'pop': 38335, 'tracts': 8}, 2452 | 'Fayette': {'pop': 38413, 'tracts': 11}, 2453 | 'Fentress': {'pop': 17959, 'tracts': 4}, 2454 | 'Franklin': {'pop': 41052, 'tracts': 9}, 2455 | 'Gibson': {'pop': 49683, 'tracts': 14}, 2456 | 'Giles': {'pop': 29485, 'tracts': 8}, 2457 | 'Grainger': {'pop': 22657, 'tracts': 5}, 2458 | 'Greene': {'pop': 68831, 'tracts': 15}, 2459 | 'Grundy': {'pop': 13703, 'tracts': 4}, 2460 | 'Hamblen': {'pop': 62544, 'tracts': 12}, 2461 | 'Hamilton': {'pop': 336463, 'tracts': 82}, 2462 | 'Hancock': {'pop': 6819, 'tracts': 2}, 2463 | 'Hardeman': {'pop': 27253, 'tracts': 6}, 2464 | 'Hardin': {'pop': 26026, 'tracts': 6}, 2465 | 'Hawkins': {'pop': 56833, 'tracts': 13}, 2466 | 'Haywood': {'pop': 18787, 'tracts': 6}, 2467 | 'Henderson': {'pop': 27769, 'tracts': 6}, 2468 | 'Henry': {'pop': 32330, 'tracts': 9}, 2469 | 'Hickman': {'pop': 24690, 'tracts': 6}, 2470 | 'Houston': {'pop': 8426, 'tracts': 3}, 2471 | 'Humphreys': {'pop': 18538, 'tracts': 5}, 2472 | 'Jackson': {'pop': 11638, 'tracts': 4}, 2473 | 'Jefferson': {'pop': 51407, 'tracts': 9}, 2474 | 'Johnson': {'pop': 18244, 'tracts': 5}, 2475 | 'Knox': {'pop': 432226, 'tracts': 112}, 2476 | 'Lake': {'pop': 7832, 'tracts': 2}, 2477 | 'Lauderdale': {'pop': 27815, 'tracts': 9}, 2478 | 'Lawrence': {'pop': 41869, 'tracts': 11}, 2479 | 'Lewis': {'pop': 12161, 'tracts': 2}, 2480 | 'Lincoln': {'pop': 33361, 'tracts': 9}, 2481 | 'Loudon': {'pop': 48556, 'tracts': 10}, 2482 | 'Macon': {'pop': 22248, 'tracts': 4}, 2483 | 'Madison': {'pop': 98294, 'tracts': 27}, 2484 | 'Marion': {'pop': 28237, 'tracts': 6}, 2485 | 'Marshall': {'pop': 30617, 'tracts': 6}, 2486 | 'Maury': {'pop': 80956, 'tracts': 17}, 2487 | 'McMinn': {'pop': 52266, 'tracts': 10}, 2488 | 'McNairy': {'pop': 26075, 'tracts': 7}, 2489 | 'Meigs': {'pop': 11753, 'tracts': 3}, 2490 | 'Monroe': {'pop': 44519, 'tracts': 7}, 2491 | 'Montgomery': {'pop': 172331, 'tracts': 39}, 2492 | 'Moore': {'pop': 6362, 'tracts': 2}, 2493 | 'Morgan': {'pop': 21987, 'tracts': 5}, 2494 | 'Obion': {'pop': 31807, 'tracts': 10}, 2495 | 'Overton': {'pop': 22083, 'tracts': 7}, 2496 | 'Perry': {'pop': 7915, 'tracts': 2}, 2497 | 'Pickett': {'pop': 5077, 'tracts': 1}, 2498 | 'Polk': {'pop': 16825, 'tracts': 5}, 2499 | 'Putnam': {'pop': 72321, 'tracts': 15}, 2500 | 'Rhea': {'pop': 31809, 'tracts': 6}, 2501 | 'Roane': {'pop': 54181, 'tracts': 11}, 2502 | 'Robertson': {'pop': 66283, 'tracts': 14}, 2503 | 'Rutherford': {'pop': 262604, 'tracts': 49}, 2504 | 'Scott': {'pop': 22228, 'tracts': 5}, 2505 | 'Sequatchie': {'pop': 14112, 'tracts': 3}, 2506 | 'Sevier': {'pop': 89889, 'tracts': 18}, 2507 | 'Shelby': {'pop': 927644, 'tracts': 221}, 2508 | 'Smith': {'pop': 19166, 'tracts': 5}, 2509 | 'Stewart': {'pop': 13324, 'tracts': 5}, 2510 | 'Sullivan': {'pop': 156823, 'tracts': 39}, 2511 | 'Sumner': {'pop': 160645, 'tracts': 42}, 2512 | 'Tipton': {'pop': 61081, 'tracts': 13}, 2513 | 'Trousdale': {'pop': 7870, 'tracts': 2}, 2514 | 'Unicoi': {'pop': 18313, 'tracts': 4}, 2515 | 'Union': {'pop': 19109, 'tracts': 4}, 2516 | 'Van Buren': {'pop': 5548, 'tracts': 2}, 2517 | 'Warren': {'pop': 39839, 'tracts': 9}, 2518 | 'Washington': {'pop': 122979, 'tracts': 23}, 2519 | 'Wayne': {'pop': 17021, 'tracts': 4}, 2520 | 'Weakley': {'pop': 35021, 'tracts': 11}, 2521 | 'White': {'pop': 25841, 'tracts': 6}, 2522 | 'Williamson': {'pop': 183182, 'tracts': 37}, 2523 | 'Wilson': {'pop': 113993, 'tracts': 21}}, 2524 | 'TX': {'Anderson': {'pop': 58458, 'tracts': 11}, 2525 | 'Andrews': {'pop': 14786, 'tracts': 4}, 2526 | 'Angelina': {'pop': 86771, 'tracts': 17}, 2527 | 'Aransas': {'pop': 23158, 'tracts': 5}, 2528 | 'Archer': {'pop': 9054, 'tracts': 3}, 2529 | 'Armstrong': {'pop': 1901, 'tracts': 1}, 2530 | 'Atascosa': {'pop': 44911, 'tracts': 8}, 2531 | 'Austin': {'pop': 28417, 'tracts': 6}, 2532 | 'Bailey': {'pop': 7165, 'tracts': 1}, 2533 | 'Bandera': {'pop': 20485, 'tracts': 5}, 2534 | 'Bastrop': {'pop': 74171, 'tracts': 10}, 2535 | 'Baylor': {'pop': 3726, 'tracts': 1}, 2536 | 'Bee': {'pop': 31861, 'tracts': 7}, 2537 | 'Bell': {'pop': 310235, 'tracts': 65}, 2538 | 'Bexar': {'pop': 1714773, 'tracts': 366}, 2539 | 'Blanco': {'pop': 10497, 'tracts': 2}, 2540 | 'Borden': {'pop': 641, 'tracts': 1}, 2541 | 'Bosque': {'pop': 18212, 'tracts': 7}, 2542 | 'Bowie': {'pop': 92565, 'tracts': 18}, 2543 | 'Brazoria': {'pop': 313166, 'tracts': 51}, 2544 | 'Brazos': {'pop': 194851, 'tracts': 42}, 2545 | 'Brewster': {'pop': 9232, 'tracts': 3}, 2546 | 'Briscoe': {'pop': 1637, 'tracts': 1}, 2547 | 'Brooks': {'pop': 7223, 'tracts': 2}, 2548 | 'Brown': {'pop': 38106, 'tracts': 12}, 2549 | 'Burleson': {'pop': 17187, 'tracts': 5}, 2550 | 'Burnet': {'pop': 42750, 'tracts': 8}, 2551 | 'Caldwell': {'pop': 38066, 'tracts': 8}, 2552 | 'Calhoun': {'pop': 21381, 'tracts': 6}, 2553 | 'Callahan': {'pop': 13544, 'tracts': 3}, 2554 | 'Cameron': {'pop': 406220, 'tracts': 86}, 2555 | 'Camp': {'pop': 12401, 'tracts': 3}, 2556 | 'Carson': {'pop': 6182, 'tracts': 2}, 2557 | 'Cass': {'pop': 30464, 'tracts': 7}, 2558 | 'Castro': {'pop': 8062, 'tracts': 3}, 2559 | 'Chambers': {'pop': 35096, 'tracts': 6}, 2560 | 'Cherokee': {'pop': 50845, 'tracts': 12}, 2561 | 'Childress': {'pop': 7041, 'tracts': 2}, 2562 | 'Clay': {'pop': 10752, 'tracts': 3}, 2563 | 'Cochran': {'pop': 3127, 'tracts': 1}, 2564 | 'Coke': {'pop': 3320, 'tracts': 2}, 2565 | 'Coleman': {'pop': 8895, 'tracts': 3}, 2566 | 'Collin': {'pop': 782341, 'tracts': 152}, 2567 | 'Collingsworth': {'pop': 3057, 'tracts': 1}, 2568 | 'Colorado': {'pop': 20874, 'tracts': 5}, 2569 | 'Comal': {'pop': 108472, 'tracts': 24}, 2570 | 'Comanche': {'pop': 13974, 'tracts': 4}, 2571 | 'Concho': {'pop': 4087, 'tracts': 1}, 2572 | 'Cooke': {'pop': 38437, 'tracts': 8}, 2573 | 'Coryell': {'pop': 75388, 'tracts': 19}, 2574 | 'Cottle': {'pop': 1505, 'tracts': 1}, 2575 | 'Crane': {'pop': 4375, 'tracts': 1}, 2576 | 'Crockett': {'pop': 3719, 'tracts': 1}, 2577 | 'Crosby': {'pop': 6059, 'tracts': 3}, 2578 | 'Culberson': {'pop': 2398, 'tracts': 1}, 2579 | 'Dallam': {'pop': 6703, 'tracts': 2}, 2580 | 'Dallas': {'pop': 2368139, 'tracts': 529}, 2581 | 'Dawson': {'pop': 13833, 'tracts': 4}, 2582 | 'DeWitt': {'pop': 20097, 'tracts': 5}, 2583 | 'Deaf Smith': {'pop': 19372, 'tracts': 4}, 2584 | 'Delta': {'pop': 5231, 'tracts': 2}, 2585 | 'Denton': {'pop': 662614, 'tracts': 137}, 2586 | 'Dickens': {'pop': 2444, 'tracts': 1}, 2587 | 'Dimmit': {'pop': 9996, 'tracts': 2}, 2588 | 'Donley': {'pop': 3677, 'tracts': 2}, 2589 | 'Duval': {'pop': 11782, 'tracts': 3}, 2590 | 'Eastland': {'pop': 18583, 'tracts': 5}, 2591 | 'Ector': {'pop': 137130, 'tracts': 28}, 2592 | 'Edwards': {'pop': 2002, 'tracts': 1}, 2593 | 'El Paso': {'pop': 800647, 'tracts': 161}, 2594 | 'Ellis': {'pop': 149610, 'tracts': 31}, 2595 | 'Erath': {'pop': 37890, 'tracts': 8}, 2596 | 'Falls': {'pop': 17866, 'tracts': 6}, 2597 | 'Fannin': {'pop': 33915, 'tracts': 9}, 2598 | 'Fayette': {'pop': 24554, 'tracts': 7}, 2599 | 'Fisher': {'pop': 3974, 'tracts': 2}, 2600 | 'Floyd': {'pop': 6446, 'tracts': 2}, 2601 | 'Foard': {'pop': 1336, 'tracts': 1}, 2602 | 'Fort Bend': {'pop': 585375, 'tracts': 76}, 2603 | 'Franklin': {'pop': 10605, 'tracts': 3}, 2604 | 'Freestone': {'pop': 19816, 'tracts': 7}, 2605 | 'Frio': {'pop': 17217, 'tracts': 3}, 2606 | 'Gaines': {'pop': 17526, 'tracts': 3}, 2607 | 'Galveston': {'pop': 291309, 'tracts': 67}, 2608 | 'Garza': {'pop': 6461, 'tracts': 1}, 2609 | 'Gillespie': {'pop': 24837, 'tracts': 5}, 2610 | 'Glasscock': {'pop': 1226, 'tracts': 1}, 2611 | 'Goliad': {'pop': 7210, 'tracts': 2}, 2612 | 'Gonzales': {'pop': 19807, 'tracts': 6}, 2613 | 'Gray': {'pop': 22535, 'tracts': 7}, 2614 | 'Grayson': {'pop': 120877, 'tracts': 26}, 2615 | 'Gregg': {'pop': 121730, 'tracts': 25}, 2616 | 'Grimes': {'pop': 26604, 'tracts': 6}, 2617 | 'Guadalupe': {'pop': 131533, 'tracts': 29}, 2618 | 'Hale': {'pop': 36273, 'tracts': 9}, 2619 | 'Hall': {'pop': 3353, 'tracts': 1}, 2620 | 'Hamilton': {'pop': 8517, 'tracts': 3}, 2621 | 'Hansford': {'pop': 5613, 'tracts': 2}, 2622 | 'Hardeman': {'pop': 4139, 'tracts': 1}, 2623 | 'Hardin': {'pop': 54635, 'tracts': 11}, 2624 | 'Harris': {'pop': 4092459, 'tracts': 786}, 2625 | 'Harrison': {'pop': 65631, 'tracts': 14}, 2626 | 'Hartley': {'pop': 6062, 'tracts': 1}, 2627 | 'Haskell': {'pop': 5899, 'tracts': 2}, 2628 | 'Hays': {'pop': 157107, 'tracts': 25}, 2629 | 'Hemphill': {'pop': 3807, 'tracts': 1}, 2630 | 'Henderson': {'pop': 78532, 'tracts': 17}, 2631 | 'Hidalgo': {'pop': 774769, 'tracts': 113}, 2632 | 'Hill': {'pop': 35089, 'tracts': 11}, 2633 | 'Hockley': {'pop': 22935, 'tracts': 7}, 2634 | 'Hood': {'pop': 51182, 'tracts': 10}, 2635 | 'Hopkins': {'pop': 35161, 'tracts': 9}, 2636 | 'Houston': {'pop': 23732, 'tracts': 7}, 2637 | 'Howard': {'pop': 35012, 'tracts': 10}, 2638 | 'Hudspeth': {'pop': 3476, 'tracts': 1}, 2639 | 'Hunt': {'pop': 86129, 'tracts': 19}, 2640 | 'Hutchinson': {'pop': 22150, 'tracts': 7}, 2641 | 'Irion': {'pop': 1599, 'tracts': 1}, 2642 | 'Jack': {'pop': 9044, 'tracts': 3}, 2643 | 'Jackson': {'pop': 14075, 'tracts': 3}, 2644 | 'Jasper': {'pop': 35710, 'tracts': 8}, 2645 | 'Jeff Davis': {'pop': 2342, 'tracts': 1}, 2646 | 'Jefferson': {'pop': 252273, 'tracts': 72}, 2647 | 'Jim Hogg': {'pop': 5300, 'tracts': 2}, 2648 | 'Jim Wells': {'pop': 40838, 'tracts': 7}, 2649 | 'Johnson': {'pop': 150934, 'tracts': 28}, 2650 | 'Jones': {'pop': 20202, 'tracts': 6}, 2651 | 'Karnes': {'pop': 14824, 'tracts': 4}, 2652 | 'Kaufman': {'pop': 103350, 'tracts': 18}, 2653 | 'Kendall': {'pop': 33410, 'tracts': 6}, 2654 | 'Kenedy': {'pop': 416, 'tracts': 1}, 2655 | 'Kent': {'pop': 808, 'tracts': 1}, 2656 | 'Kerr': {'pop': 49625, 'tracts': 10}, 2657 | 'Kimble': {'pop': 4607, 'tracts': 2}, 2658 | 'King': {'pop': 286, 'tracts': 1}, 2659 | 'Kinney': {'pop': 3598, 'tracts': 1}, 2660 | 'Kleberg': {'pop': 32061, 'tracts': 6}, 2661 | 'Knox': {'pop': 3719, 'tracts': 2}, 2662 | 'La Salle': {'pop': 6886, 'tracts': 1}, 2663 | 'Lamar': {'pop': 49793, 'tracts': 12}, 2664 | 'Lamb': {'pop': 13977, 'tracts': 5}, 2665 | 'Lampasas': {'pop': 19677, 'tracts': 5}, 2666 | 'Lavaca': {'pop': 19263, 'tracts': 6}, 2667 | 'Lee': {'pop': 16612, 'tracts': 4}, 2668 | 'Leon': {'pop': 16801, 'tracts': 3}, 2669 | 'Liberty': {'pop': 75643, 'tracts': 14}, 2670 | 'Limestone': {'pop': 23384, 'tracts': 8}, 2671 | 'Lipscomb': {'pop': 3302, 'tracts': 2}, 2672 | 'Live Oak': {'pop': 11531, 'tracts': 4}, 2673 | 'Llano': {'pop': 19301, 'tracts': 6}, 2674 | 'Loving': {'pop': 82, 'tracts': 1}, 2675 | 'Lubbock': {'pop': 278831, 'tracts': 68}, 2676 | 'Lynn': {'pop': 5915, 'tracts': 3}, 2677 | 'Madison': {'pop': 13664, 'tracts': 4}, 2678 | 'Marion': {'pop': 10546, 'tracts': 4}, 2679 | 'Martin': {'pop': 4799, 'tracts': 2}, 2680 | 'Mason': {'pop': 4012, 'tracts': 2}, 2681 | 'Matagorda': {'pop': 36702, 'tracts': 10}, 2682 | 'Maverick': {'pop': 54258, 'tracts': 9}, 2683 | 'McCulloch': {'pop': 8283, 'tracts': 3}, 2684 | 'McLennan': {'pop': 234906, 'tracts': 51}, 2685 | 'McMullen': {'pop': 707, 'tracts': 1}, 2686 | 'Medina': {'pop': 46006, 'tracts': 8}, 2687 | 'Menard': {'pop': 2242, 'tracts': 1}, 2688 | 'Midland': {'pop': 136872, 'tracts': 27}, 2689 | 'Milam': {'pop': 24757, 'tracts': 7}, 2690 | 'Mills': {'pop': 4936, 'tracts': 2}, 2691 | 'Mitchell': {'pop': 9403, 'tracts': 2}, 2692 | 'Montague': {'pop': 19719, 'tracts': 6}, 2693 | 'Montgomery': {'pop': 455746, 'tracts': 59}, 2694 | 'Moore': {'pop': 21904, 'tracts': 4}, 2695 | 'Morris': {'pop': 12934, 'tracts': 3}, 2696 | 'Motley': {'pop': 1210, 'tracts': 1}, 2697 | 'Nacogdoches': {'pop': 64524, 'tracts': 13}, 2698 | 'Navarro': {'pop': 47735, 'tracts': 10}, 2699 | 'Newton': {'pop': 14445, 'tracts': 4}, 2700 | 'Nolan': {'pop': 15216, 'tracts': 5}, 2701 | 'Nueces': {'pop': 340223, 'tracts': 81}, 2702 | 'Ochiltree': {'pop': 10223, 'tracts': 3}, 2703 | 'Oldham': {'pop': 2052, 'tracts': 1}, 2704 | 'Orange': {'pop': 81837, 'tracts': 21}, 2705 | 'Palo Pinto': {'pop': 28111, 'tracts': 9}, 2706 | 'Panola': {'pop': 23796, 'tracts': 6}, 2707 | 'Parker': {'pop': 116927, 'tracts': 19}, 2708 | 'Parmer': {'pop': 10269, 'tracts': 2}, 2709 | 'Pecos': {'pop': 15507, 'tracts': 4}, 2710 | 'Polk': {'pop': 45413, 'tracts': 10}, 2711 | 'Potter': {'pop': 121073, 'tracts': 34}, 2712 | 'Presidio': {'pop': 7818, 'tracts': 2}, 2713 | 'Rains': {'pop': 10914, 'tracts': 2}, 2714 | 'Randall': {'pop': 120725, 'tracts': 29}, 2715 | 'Reagan': {'pop': 3367, 'tracts': 1}, 2716 | 'Real': {'pop': 3309, 'tracts': 1}, 2717 | 'Red River': {'pop': 12860, 'tracts': 4}, 2718 | 'Reeves': {'pop': 13783, 'tracts': 5}, 2719 | 'Refugio': {'pop': 7383, 'tracts': 2}, 2720 | 'Roberts': {'pop': 929, 'tracts': 1}, 2721 | 'Robertson': {'pop': 16622, 'tracts': 5}, 2722 | 'Rockwall': {'pop': 78337, 'tracts': 11}, 2723 | 'Runnels': {'pop': 10501, 'tracts': 4}, 2724 | 'Rusk': {'pop': 53330, 'tracts': 13}, 2725 | 'Sabine': {'pop': 10834, 'tracts': 3}, 2726 | 'San Augustine': {'pop': 8865, 'tracts': 3}, 2727 | 'San Jacinto': {'pop': 26384, 'tracts': 4}, 2728 | 'San Patricio': {'pop': 64804, 'tracts': 16}, 2729 | 'San Saba': {'pop': 6131, 'tracts': 2}, 2730 | 'Schleicher': {'pop': 3461, 'tracts': 1}, 2731 | 'Scurry': {'pop': 16921, 'tracts': 4}, 2732 | 'Shackelford': {'pop': 3378, 'tracts': 1}, 2733 | 'Shelby': {'pop': 25448, 'tracts': 6}, 2734 | 'Sherman': {'pop': 3034, 'tracts': 1}, 2735 | 'Smith': {'pop': 209714, 'tracts': 41}, 2736 | 'Somervell': {'pop': 8490, 'tracts': 2}, 2737 | 'Starr': {'pop': 60968, 'tracts': 15}, 2738 | 'Stephens': {'pop': 9630, 'tracts': 3}, 2739 | 'Sterling': {'pop': 1143, 'tracts': 1}, 2740 | 'Stonewall': {'pop': 1490, 'tracts': 1}, 2741 | 'Sutton': {'pop': 4128, 'tracts': 1}, 2742 | 'Swisher': {'pop': 7854, 'tracts': 3}, 2743 | 'Tarrant': {'pop': 1809034, 'tracts': 357}, 2744 | 'Taylor': {'pop': 131506, 'tracts': 38}, 2745 | 'Terrell': {'pop': 984, 'tracts': 1}, 2746 | 'Terry': {'pop': 12651, 'tracts': 3}, 2747 | 'Throckmorton': {'pop': 1641, 'tracts': 1}, 2748 | 'Titus': {'pop': 32334, 'tracts': 8}, 2749 | 'Tom Green': {'pop': 110224, 'tracts': 25}, 2750 | 'Travis': {'pop': 1024266, 'tracts': 218}, 2751 | 'Trinity': {'pop': 14585, 'tracts': 5}, 2752 | 'Tyler': {'pop': 21766, 'tracts': 5}, 2753 | 'Upshur': {'pop': 39309, 'tracts': 7}, 2754 | 'Upton': {'pop': 3355, 'tracts': 2}, 2755 | 'Uvalde': {'pop': 26405, 'tracts': 5}, 2756 | 'Val Verde': {'pop': 48879, 'tracts': 10}, 2757 | 'Van Zandt': {'pop': 52579, 'tracts': 10}, 2758 | 'Victoria': {'pop': 86793, 'tracts': 23}, 2759 | 'Walker': {'pop': 67861, 'tracts': 10}, 2760 | 'Waller': {'pop': 43205, 'tracts': 6}, 2761 | 'Ward': {'pop': 10658, 'tracts': 3}, 2762 | 'Washington': {'pop': 33718, 'tracts': 6}, 2763 | 'Webb': {'pop': 250304, 'tracts': 61}, 2764 | 'Wharton': {'pop': 41280, 'tracts': 11}, 2765 | 'Wheeler': {'pop': 5410, 'tracts': 2}, 2766 | 'Wichita': {'pop': 131500, 'tracts': 37}, 2767 | 'Wilbarger': {'pop': 13535, 'tracts': 4}, 2768 | 'Willacy': {'pop': 22134, 'tracts': 6}, 2769 | 'Williamson': {'pop': 422679, 'tracts': 89}, 2770 | 'Wilson': {'pop': 42918, 'tracts': 11}, 2771 | 'Winkler': {'pop': 7110, 'tracts': 3}, 2772 | 'Wise': {'pop': 59127, 'tracts': 11}, 2773 | 'Wood': {'pop': 41964, 'tracts': 10}, 2774 | 'Yoakum': {'pop': 7879, 'tracts': 2}, 2775 | 'Young': {'pop': 18550, 'tracts': 4}, 2776 | 'Zapata': {'pop': 14018, 'tracts': 3}, 2777 | 'Zavala': {'pop': 11677, 'tracts': 4}}, 2778 | 'UT': {'Beaver': {'pop': 6629, 'tracts': 2}, 2779 | 'Box Elder': {'pop': 49975, 'tracts': 11}, 2780 | 'Cache': {'pop': 112656, 'tracts': 26}, 2781 | 'Carbon': {'pop': 21403, 'tracts': 5}, 2782 | 'Daggett': {'pop': 1059, 'tracts': 1}, 2783 | 'Davis': {'pop': 306479, 'tracts': 54}, 2784 | 'Duchesne': {'pop': 18607, 'tracts': 3}, 2785 | 'Emery': {'pop': 10976, 'tracts': 3}, 2786 | 'Garfield': {'pop': 5172, 'tracts': 2}, 2787 | 'Grand': {'pop': 9225, 'tracts': 2}, 2788 | 'Iron': {'pop': 46163, 'tracts': 8}, 2789 | 'Juab': {'pop': 10246, 'tracts': 2}, 2790 | 'Kane': {'pop': 7125, 'tracts': 2}, 2791 | 'Millard': {'pop': 12503, 'tracts': 3}, 2792 | 'Morgan': {'pop': 9469, 'tracts': 2}, 2793 | 'Piute': {'pop': 1556, 'tracts': 1}, 2794 | 'Rich': {'pop': 2264, 'tracts': 1}, 2795 | 'Salt Lake': {'pop': 1029655, 'tracts': 212}, 2796 | 'San Juan': {'pop': 14746, 'tracts': 4}, 2797 | 'Sanpete': {'pop': 27822, 'tracts': 5}, 2798 | 'Sevier': {'pop': 20802, 'tracts': 5}, 2799 | 'Summit': {'pop': 36324, 'tracts': 13}, 2800 | 'Tooele': {'pop': 58218, 'tracts': 11}, 2801 | 'Uintah': {'pop': 32588, 'tracts': 6}, 2802 | 'Utah': {'pop': 516564, 'tracts': 128}, 2803 | 'Wasatch': {'pop': 23530, 'tracts': 4}, 2804 | 'Washington': {'pop': 138115, 'tracts': 21}, 2805 | 'Wayne': {'pop': 2778, 'tracts': 1}, 2806 | 'Weber': {'pop': 231236, 'tracts': 50}}, 2807 | 'VA': {'Accomack': {'pop': 33164, 'tracts': 11}, 2808 | 'Albemarle': {'pop': 98970, 'tracts': 22}, 2809 | 'Alexandria': {'pop': 139966, 'tracts': 38}, 2810 | 'Alleghany': {'pop': 16250, 'tracts': 6}, 2811 | 'Amelia': {'pop': 12690, 'tracts': 2}, 2812 | 'Amherst': {'pop': 32353, 'tracts': 9}, 2813 | 'Appomattox': {'pop': 14973, 'tracts': 3}, 2814 | 'Arlington': {'pop': 207627, 'tracts': 59}, 2815 | 'Augusta': {'pop': 73750, 'tracts': 13}, 2816 | 'Bath': {'pop': 4731, 'tracts': 1}, 2817 | 'Bedford': {'pop': 68676, 'tracts': 16}, 2818 | 'Bedford City': {'pop': 6222, 'tracts': 1}, 2819 | 'Bland': {'pop': 6824, 'tracts': 2}, 2820 | 'Botetourt': {'pop': 33148, 'tracts': 8}, 2821 | 'Bristol': {'pop': 17835, 'tracts': 4}, 2822 | 'Brunswick': {'pop': 17434, 'tracts': 5}, 2823 | 'Buchanan': {'pop': 24098, 'tracts': 7}, 2824 | 'Buckingham': {'pop': 17146, 'tracts': 4}, 2825 | 'Buena Vista': {'pop': 6650, 'tracts': 1}, 2826 | 'Campbell': {'pop': 54842, 'tracts': 12}, 2827 | 'Caroline': {'pop': 28545, 'tracts': 7}, 2828 | 'Carroll': {'pop': 30042, 'tracts': 7}, 2829 | 'Charles City': {'pop': 7256, 'tracts': 3}, 2830 | 'Charlotte': {'pop': 12586, 'tracts': 3}, 2831 | 'Charlottesville': {'pop': 43475, 'tracts': 12}, 2832 | 'Chesapeake': {'pop': 222209, 'tracts': 41}, 2833 | 'Chesterfield': {'pop': 316236, 'tracts': 71}, 2834 | 'Clarke': {'pop': 14034, 'tracts': 3}, 2835 | 'Colonial Heights': {'pop': 17411, 'tracts': 5}, 2836 | 'Covington': {'pop': 5961, 'tracts': 2}, 2837 | 'Craig': {'pop': 5190, 'tracts': 1}, 2838 | 'Culpeper': {'pop': 46689, 'tracts': 8}, 2839 | 'Cumberland': {'pop': 10052, 'tracts': 2}, 2840 | 'Danville': {'pop': 43055, 'tracts': 16}, 2841 | 'Dickenson': {'pop': 15903, 'tracts': 4}, 2842 | 'Dinwiddie': {'pop': 28001, 'tracts': 7}, 2843 | 'Emporia': {'pop': 5927, 'tracts': 2}, 2844 | 'Essex': {'pop': 11151, 'tracts': 3}, 2845 | 'Fairfax': {'pop': 1081726, 'tracts': 258}, 2846 | 'Fairfax City': {'pop': 22565, 'tracts': 5}, 2847 | 'Falls Church': {'pop': 12332, 'tracts': 3}, 2848 | 'Fauquier': {'pop': 65203, 'tracts': 17}, 2849 | 'Floyd': {'pop': 15279, 'tracts': 3}, 2850 | 'Fluvanna': {'pop': 25691, 'tracts': 4}, 2851 | 'Franklin': {'pop': 56159, 'tracts': 10}, 2852 | 'Franklin City': {'pop': 8582, 'tracts': 2}, 2853 | 'Frederick': {'pop': 78305, 'tracts': 14}, 2854 | 'Fredericksburg': {'pop': 24286, 'tracts': 6}, 2855 | 'Galax': {'pop': 7042, 'tracts': 2}, 2856 | 'Giles': {'pop': 17286, 'tracts': 4}, 2857 | 'Gloucester': {'pop': 36858, 'tracts': 8}, 2858 | 'Goochland': {'pop': 21717, 'tracts': 5}, 2859 | 'Grayson': {'pop': 15533, 'tracts': 5}, 2860 | 'Greene': {'pop': 18403, 'tracts': 3}, 2861 | 'Greensville': {'pop': 12243, 'tracts': 3}, 2862 | 'Halifax': {'pop': 36241, 'tracts': 9}, 2863 | 'Hampton': {'pop': 137436, 'tracts': 34}, 2864 | 'Hanover': {'pop': 99863, 'tracts': 23}, 2865 | 'Harrisonburg': {'pop': 48914, 'tracts': 11}, 2866 | 'Henrico': {'pop': 306935, 'tracts': 64}, 2867 | 'Henry': {'pop': 54151, 'tracts': 14}, 2868 | 'Highland': {'pop': 2321, 'tracts': 1}, 2869 | 'Hopewell': {'pop': 22591, 'tracts': 7}, 2870 | 'Isle of Wight': {'pop': 35270, 'tracts': 8}, 2871 | 'James City': {'pop': 67009, 'tracts': 11}, 2872 | 'King George': {'pop': 23584, 'tracts': 5}, 2873 | 'King William': {'pop': 15935, 'tracts': 4}, 2874 | 'King and Queen': {'pop': 6945, 'tracts': 2}, 2875 | 'Lancaster': {'pop': 11391, 'tracts': 3}, 2876 | 'Lee': {'pop': 25587, 'tracts': 6}, 2877 | 'Lexington': {'pop': 7042, 'tracts': 1}, 2878 | 'Loudoun': {'pop': 312311, 'tracts': 65}, 2879 | 'Louisa': {'pop': 33153, 'tracts': 6}, 2880 | 'Lunenburg': {'pop': 12914, 'tracts': 3}, 2881 | 'Lynchburg': {'pop': 75568, 'tracts': 19}, 2882 | 'Madison': {'pop': 13308, 'tracts': 2}, 2883 | 'Manassas': {'pop': 37821, 'tracts': 7}, 2884 | 'Manassas Park': {'pop': 14273, 'tracts': 2}, 2885 | 'Martinsville': {'pop': 13821, 'tracts': 5}, 2886 | 'Mathews': {'pop': 8978, 'tracts': 2}, 2887 | 'Mecklenburg': {'pop': 32727, 'tracts': 9}, 2888 | 'Middlesex': {'pop': 10959, 'tracts': 4}, 2889 | 'Montgomery': {'pop': 94392, 'tracts': 16}, 2890 | 'Nelson': {'pop': 15020, 'tracts': 3}, 2891 | 'New Kent': {'pop': 18429, 'tracts': 3}, 2892 | 'Newport News': {'pop': 180719, 'tracts': 44}, 2893 | 'Norfolk': {'pop': 242803, 'tracts': 81}, 2894 | 'Northampton': {'pop': 12389, 'tracts': 4}, 2895 | 'Northumberland': {'pop': 12330, 'tracts': 3}, 2896 | 'Norton': {'pop': 3958, 'tracts': 1}, 2897 | 'Nottoway': {'pop': 15853, 'tracts': 4}, 2898 | 'Orange': {'pop': 33481, 'tracts': 5}, 2899 | 'Page': {'pop': 24042, 'tracts': 5}, 2900 | 'Patrick': {'pop': 18490, 'tracts': 4}, 2901 | 'Petersburg': {'pop': 32420, 'tracts': 11}, 2902 | 'Pittsylvania': {'pop': 63506, 'tracts': 16}, 2903 | 'Poquoson': {'pop': 12150, 'tracts': 3}, 2904 | 'Portsmouth': {'pop': 95535, 'tracts': 31}, 2905 | 'Powhatan': {'pop': 28046, 'tracts': 5}, 2906 | 'Prince Edward': {'pop': 23368, 'tracts': 5}, 2907 | 'Prince George': {'pop': 35725, 'tracts': 7}, 2908 | 'Prince William': {'pop': 402002, 'tracts': 83}, 2909 | 'Pulaski': {'pop': 34872, 'tracts': 10}, 2910 | 'Radford': {'pop': 16408, 'tracts': 3}, 2911 | 'Rappahannock': {'pop': 7373, 'tracts': 2}, 2912 | 'Richmond': {'pop': 9254, 'tracts': 2}, 2913 | 'Richmond City': {'pop': 204214, 'tracts': 66}, 2914 | 'Roanoke': {'pop': 92376, 'tracts': 18}, 2915 | 'Roanoke City': {'pop': 97032, 'tracts': 23}, 2916 | 'Rockbridge': {'pop': 22307, 'tracts': 4}, 2917 | 'Rockingham': {'pop': 76314, 'tracts': 19}, 2918 | 'Russell': {'pop': 28897, 'tracts': 7}, 2919 | 'Salem': {'pop': 24802, 'tracts': 5}, 2920 | 'Scott': {'pop': 23177, 'tracts': 6}, 2921 | 'Shenandoah': {'pop': 41993, 'tracts': 9}, 2922 | 'Smyth': {'pop': 32208, 'tracts': 9}, 2923 | 'Southampton': {'pop': 18570, 'tracts': 5}, 2924 | 'Spotsylvania': {'pop': 122397, 'tracts': 30}, 2925 | 'Stafford': {'pop': 128961, 'tracts': 27}, 2926 | 'Staunton': {'pop': 23746, 'tracts': 6}, 2927 | 'Suffolk': {'pop': 84585, 'tracts': 28}, 2928 | 'Surry': {'pop': 7058, 'tracts': 2}, 2929 | 'Sussex': {'pop': 12087, 'tracts': 5}, 2930 | 'Tazewell': {'pop': 45078, 'tracts': 11}, 2931 | 'Virginia Beach': {'pop': 437994, 'tracts': 100}, 2932 | 'Warren': {'pop': 37575, 'tracts': 8}, 2933 | 'Washington': {'pop': 54876, 'tracts': 13}, 2934 | 'Waynesboro': {'pop': 21006, 'tracts': 5}, 2935 | 'Westmoreland': {'pop': 17454, 'tracts': 4}, 2936 | 'Williamsburg': {'pop': 14068, 'tracts': 3}, 2937 | 'Winchester': {'pop': 26203, 'tracts': 5}, 2938 | 'Wise': {'pop': 41452, 'tracts': 11}, 2939 | 'Wythe': {'pop': 29235, 'tracts': 6}, 2940 | 'York': {'pop': 65464, 'tracts': 14}}, 2941 | 'VT': {'Addison': {'pop': 36821, 'tracts': 10}, 2942 | 'Bennington': {'pop': 37125, 'tracts': 12}, 2943 | 'Caledonia': {'pop': 31227, 'tracts': 10}, 2944 | 'Chittenden': {'pop': 156545, 'tracts': 35}, 2945 | 'Essex': {'pop': 6306, 'tracts': 3}, 2946 | 'Franklin': {'pop': 47746, 'tracts': 10}, 2947 | 'Grand Isle': {'pop': 6970, 'tracts': 2}, 2948 | 'Lamoille': {'pop': 24475, 'tracts': 7}, 2949 | 'Orange': {'pop': 28936, 'tracts': 10}, 2950 | 'Orleans': {'pop': 27231, 'tracts': 10}, 2951 | 'Rutland': {'pop': 61642, 'tracts': 20}, 2952 | 'Washington': {'pop': 59534, 'tracts': 19}, 2953 | 'Windham': {'pop': 44513, 'tracts': 18}, 2954 | 'Windsor': {'pop': 56670, 'tracts': 18}}, 2955 | 'WA': {'Adams': {'pop': 18728, 'tracts': 5}, 2956 | 'Asotin': {'pop': 21623, 'tracts': 6}, 2957 | 'Benton': {'pop': 175177, 'tracts': 37}, 2958 | 'Chelan': {'pop': 72453, 'tracts': 14}, 2959 | 'Clallam': {'pop': 71404, 'tracts': 22}, 2960 | 'Clark': {'pop': 425363, 'tracts': 104}, 2961 | 'Columbia': {'pop': 4078, 'tracts': 1}, 2962 | 'Cowlitz': {'pop': 102410, 'tracts': 24}, 2963 | 'Douglas': {'pop': 38431, 'tracts': 8}, 2964 | 'Ferry': {'pop': 7551, 'tracts': 3}, 2965 | 'Franklin': {'pop': 78163, 'tracts': 13}, 2966 | 'Garfield': {'pop': 2266, 'tracts': 1}, 2967 | 'Grant': {'pop': 89120, 'tracts': 16}, 2968 | 'Grays Harbor': {'pop': 72797, 'tracts': 17}, 2969 | 'Island': {'pop': 78506, 'tracts': 22}, 2970 | 'Jefferson': {'pop': 29872, 'tracts': 7}, 2971 | 'King': {'pop': 1931249, 'tracts': 397}, 2972 | 'Kitsap': {'pop': 251133, 'tracts': 55}, 2973 | 'Kittitas': {'pop': 40915, 'tracts': 8}, 2974 | 'Klickitat': {'pop': 20318, 'tracts': 3}, 2975 | 'Lewis': {'pop': 75455, 'tracts': 20}, 2976 | 'Lincoln': {'pop': 10570, 'tracts': 4}, 2977 | 'Mason': {'pop': 60699, 'tracts': 14}, 2978 | 'Okanogan': {'pop': 41120, 'tracts': 10}, 2979 | 'Pacific': {'pop': 20920, 'tracts': 8}, 2980 | 'Pend Oreille': {'pop': 13001, 'tracts': 5}, 2981 | 'Pierce': {'pop': 795225, 'tracts': 172}, 2982 | 'San Juan': {'pop': 15769, 'tracts': 5}, 2983 | 'Skagit': {'pop': 116901, 'tracts': 30}, 2984 | 'Skamania': {'pop': 11066, 'tracts': 5}, 2985 | 'Snohomish': {'pop': 713335, 'tracts': 151}, 2986 | 'Spokane': {'pop': 471221, 'tracts': 105}, 2987 | 'Stevens': {'pop': 43531, 'tracts': 12}, 2988 | 'Thurston': {'pop': 252264, 'tracts': 49}, 2989 | 'Wahkiakum': {'pop': 3978, 'tracts': 1}, 2990 | 'Walla Walla': {'pop': 58781, 'tracts': 12}, 2991 | 'Whatcom': {'pop': 201140, 'tracts': 34}, 2992 | 'Whitman': {'pop': 44776, 'tracts': 10}, 2993 | 'Yakima': {'pop': 243231, 'tracts': 45}}, 2994 | 'WI': {'Adams': {'pop': 20875, 'tracts': 7}, 2995 | 'Ashland': {'pop': 16157, 'tracts': 7}, 2996 | 'Barron': {'pop': 45870, 'tracts': 10}, 2997 | 'Bayfield': {'pop': 15014, 'tracts': 5}, 2998 | 'Brown': {'pop': 248007, 'tracts': 54}, 2999 | 'Buffalo': {'pop': 13587, 'tracts': 5}, 3000 | 'Burnett': {'pop': 15457, 'tracts': 6}, 3001 | 'Calumet': {'pop': 48971, 'tracts': 11}, 3002 | 'Chippewa': {'pop': 62415, 'tracts': 11}, 3003 | 'Clark': {'pop': 34690, 'tracts': 8}, 3004 | 'Columbia': {'pop': 56833, 'tracts': 12}, 3005 | 'Crawford': {'pop': 16644, 'tracts': 6}, 3006 | 'Dane': {'pop': 488073, 'tracts': 107}, 3007 | 'Dodge': {'pop': 88759, 'tracts': 20}, 3008 | 'Door': {'pop': 27785, 'tracts': 9}, 3009 | 'Douglas': {'pop': 44159, 'tracts': 12}, 3010 | 'Dunn': {'pop': 43857, 'tracts': 8}, 3011 | 'Eau Claire': {'pop': 98736, 'tracts': 20}, 3012 | 'Florence': {'pop': 4423, 'tracts': 2}, 3013 | 'Fond du Lac': {'pop': 101633, 'tracts': 20}, 3014 | 'Forest': {'pop': 9304, 'tracts': 4}, 3015 | 'Grant': {'pop': 51208, 'tracts': 12}, 3016 | 'Green': {'pop': 36842, 'tracts': 8}, 3017 | 'Green Lake': {'pop': 19051, 'tracts': 6}, 3018 | 'Iowa': {'pop': 23687, 'tracts': 6}, 3019 | 'Iron': {'pop': 5916, 'tracts': 3}, 3020 | 'Jackson': {'pop': 20449, 'tracts': 5}, 3021 | 'Jefferson': {'pop': 83686, 'tracts': 20}, 3022 | 'Juneau': {'pop': 26664, 'tracts': 7}, 3023 | 'Kenosha': {'pop': 166426, 'tracts': 35}, 3024 | 'Kewaunee': {'pop': 20574, 'tracts': 4}, 3025 | 'La Crosse': {'pop': 114638, 'tracts': 25}, 3026 | 'Lafayette': {'pop': 16836, 'tracts': 5}, 3027 | 'Langlade': {'pop': 19977, 'tracts': 6}, 3028 | 'Lincoln': {'pop': 28743, 'tracts': 10}, 3029 | 'Manitowoc': {'pop': 81442, 'tracts': 19}, 3030 | 'Marathon': {'pop': 134063, 'tracts': 27}, 3031 | 'Marinette': {'pop': 41749, 'tracts': 12}, 3032 | 'Marquette': {'pop': 15404, 'tracts': 5}, 3033 | 'Menominee': {'pop': 4232, 'tracts': 2}, 3034 | 'Milwaukee': {'pop': 947735, 'tracts': 297}, 3035 | 'Monroe': {'pop': 44673, 'tracts': 9}, 3036 | 'Oconto': {'pop': 37660, 'tracts': 10}, 3037 | 'Oneida': {'pop': 35998, 'tracts': 14}, 3038 | 'Outagamie': {'pop': 176695, 'tracts': 40}, 3039 | 'Ozaukee': {'pop': 86395, 'tracts': 18}, 3040 | 'Pepin': {'pop': 7469, 'tracts': 2}, 3041 | 'Pierce': {'pop': 41019, 'tracts': 8}, 3042 | 'Polk': {'pop': 44205, 'tracts': 10}, 3043 | 'Portage': {'pop': 70019, 'tracts': 14}, 3044 | 'Price': {'pop': 14159, 'tracts': 6}, 3045 | 'Racine': {'pop': 195408, 'tracts': 44}, 3046 | 'Richland': {'pop': 18021, 'tracts': 5}, 3047 | 'Rock': {'pop': 160331, 'tracts': 38}, 3048 | 'Rusk': {'pop': 14755, 'tracts': 5}, 3049 | 'Sauk': {'pop': 61976, 'tracts': 13}, 3050 | 'Sawyer': {'pop': 16557, 'tracts': 6}, 3051 | 'Shawano': {'pop': 41949, 'tracts': 11}, 3052 | 'Sheboygan': {'pop': 115507, 'tracts': 26}, 3053 | 'St. Croix': {'pop': 84345, 'tracts': 14}, 3054 | 'Taylor': {'pop': 20689, 'tracts': 6}, 3055 | 'Trempealeau': {'pop': 28816, 'tracts': 8}, 3056 | 'Vernon': {'pop': 29773, 'tracts': 7}, 3057 | 'Vilas': {'pop': 21430, 'tracts': 5}, 3058 | 'Walworth': {'pop': 102228, 'tracts': 22}, 3059 | 'Washburn': {'pop': 15911, 'tracts': 5}, 3060 | 'Washington': {'pop': 131887, 'tracts': 28}, 3061 | 'Waukesha': {'pop': 389891, 'tracts': 86}, 3062 | 'Waupaca': {'pop': 52410, 'tracts': 12}, 3063 | 'Waushara': {'pop': 24496, 'tracts': 7}, 3064 | 'Winnebago': {'pop': 166994, 'tracts': 41}, 3065 | 'Wood': {'pop': 74749, 'tracts': 17}}, 3066 | 'WV': {'Barbour': {'pop': 16589, 'tracts': 4}, 3067 | 'Berkeley': {'pop': 104169, 'tracts': 14}, 3068 | 'Boone': {'pop': 24629, 'tracts': 8}, 3069 | 'Braxton': {'pop': 14523, 'tracts': 3}, 3070 | 'Brooke': {'pop': 24069, 'tracts': 6}, 3071 | 'Cabell': {'pop': 96319, 'tracts': 29}, 3072 | 'Calhoun': {'pop': 7627, 'tracts': 2}, 3073 | 'Clay': {'pop': 9386, 'tracts': 3}, 3074 | 'Doddridge': {'pop': 8202, 'tracts': 2}, 3075 | 'Fayette': {'pop': 46039, 'tracts': 12}, 3076 | 'Gilmer': {'pop': 8693, 'tracts': 2}, 3077 | 'Grant': {'pop': 11937, 'tracts': 3}, 3078 | 'Greenbrier': {'pop': 35480, 'tracts': 7}, 3079 | 'Hampshire': {'pop': 23964, 'tracts': 5}, 3080 | 'Hancock': {'pop': 30676, 'tracts': 8}, 3081 | 'Hardy': {'pop': 14025, 'tracts': 3}, 3082 | 'Harrison': {'pop': 69099, 'tracts': 22}, 3083 | 'Jackson': {'pop': 29211, 'tracts': 6}, 3084 | 'Jefferson': {'pop': 53498, 'tracts': 15}, 3085 | 'Kanawha': {'pop': 193063, 'tracts': 53}, 3086 | 'Lewis': {'pop': 16372, 'tracts': 5}, 3087 | 'Lincoln': {'pop': 21720, 'tracts': 5}, 3088 | 'Logan': {'pop': 36743, 'tracts': 9}, 3089 | 'Marion': {'pop': 56418, 'tracts': 18}, 3090 | 'Marshall': {'pop': 33107, 'tracts': 9}, 3091 | 'Mason': {'pop': 27324, 'tracts': 6}, 3092 | 'McDowell': {'pop': 22113, 'tracts': 8}, 3093 | 'Mercer': {'pop': 62264, 'tracts': 16}, 3094 | 'Mineral': {'pop': 28212, 'tracts': 7}, 3095 | 'Mingo': {'pop': 26839, 'tracts': 7}, 3096 | 'Monongalia': {'pop': 96189, 'tracts': 24}, 3097 | 'Monroe': {'pop': 13502, 'tracts': 3}, 3098 | 'Morgan': {'pop': 17541, 'tracts': 4}, 3099 | 'Nicholas': {'pop': 26233, 'tracts': 7}, 3100 | 'Ohio': {'pop': 44443, 'tracts': 18}, 3101 | 'Pendleton': {'pop': 7695, 'tracts': 3}, 3102 | 'Pleasants': {'pop': 7605, 'tracts': 2}, 3103 | 'Pocahontas': {'pop': 8719, 'tracts': 4}, 3104 | 'Preston': {'pop': 33520, 'tracts': 8}, 3105 | 'Putnam': {'pop': 55486, 'tracts': 10}, 3106 | 'Raleigh': {'pop': 78859, 'tracts': 17}, 3107 | 'Randolph': {'pop': 29405, 'tracts': 7}, 3108 | 'Ritchie': {'pop': 10449, 'tracts': 3}, 3109 | 'Roane': {'pop': 14926, 'tracts': 4}, 3110 | 'Summers': {'pop': 13927, 'tracts': 4}, 3111 | 'Taylor': {'pop': 16895, 'tracts': 4}, 3112 | 'Tucker': {'pop': 7141, 'tracts': 3}, 3113 | 'Tyler': {'pop': 9208, 'tracts': 3}, 3114 | 'Upshur': {'pop': 24254, 'tracts': 6}, 3115 | 'Wayne': {'pop': 42481, 'tracts': 11}, 3116 | 'Webster': {'pop': 9154, 'tracts': 3}, 3117 | 'Wetzel': {'pop': 16583, 'tracts': 5}, 3118 | 'Wirt': {'pop': 5717, 'tracts': 2}, 3119 | 'Wood': {'pop': 86956, 'tracts': 26}, 3120 | 'Wyoming': {'pop': 23796, 'tracts': 6}}, 3121 | 'WY': {'Albany': {'pop': 36299, 'tracts': 10}, 3122 | 'Big Horn': {'pop': 11668, 'tracts': 3}, 3123 | 'Campbell': {'pop': 46133, 'tracts': 7}, 3124 | 'Carbon': {'pop': 15885, 'tracts': 5}, 3125 | 'Converse': {'pop': 13833, 'tracts': 4}, 3126 | 'Crook': {'pop': 7083, 'tracts': 2}, 3127 | 'Fremont': {'pop': 40123, 'tracts': 10}, 3128 | 'Goshen': {'pop': 13249, 'tracts': 4}, 3129 | 'Hot Springs': {'pop': 4812, 'tracts': 2}, 3130 | 'Johnson': {'pop': 8569, 'tracts': 2}, 3131 | 'Laramie': {'pop': 91738, 'tracts': 21}, 3132 | 'Lincoln': {'pop': 18106, 'tracts': 4}, 3133 | 'Natrona': {'pop': 75450, 'tracts': 18}, 3134 | 'Niobrara': {'pop': 2484, 'tracts': 1}, 3135 | 'Park': {'pop': 28205, 'tracts': 5}, 3136 | 'Platte': {'pop': 8667, 'tracts': 2}, 3137 | 'Sheridan': {'pop': 29116, 'tracts': 6}, 3138 | 'Sublette': {'pop': 10247, 'tracts': 2}, 3139 | 'Sweetwater': {'pop': 43806, 'tracts': 12}, 3140 | 'Teton': {'pop': 21294, 'tracts': 4}, 3141 | 'Uinta': {'pop': 21118, 'tracts': 3}, 3142 | 'Washakie': {'pop': 8533, 'tracts': 3}, 3143 | 'Weston': {'pop': 7208, 'tracts': 2}}} -------------------------------------------------------------------------------- /CH12/censuspopdata.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonMDev/automate-boring-stuff/3a4123f9f2173e8d031b107021a35018e55418f2/CH12/censuspopdata.xlsx -------------------------------------------------------------------------------- /CH12/example.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonMDev/automate-boring-stuff/3a4123f9f2173e8d031b107021a35018e55418f2/CH12/example.xlsx -------------------------------------------------------------------------------- /CH12/readCensusExcel.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # readCensusExcel.py - Tabulates population and number of census tracts for 3 | # each county. 4 | 5 | import openpyxl, pprint 6 | print('Opening workbook...') 7 | wb = openpyxl.load_workbook('censuspopdata.xlsx') 8 | sheet = wb.get_sheet_by_name('Population by Census Tract') 9 | countyData = {} 10 | # Fill in countyData with each county's population and tracts. 11 | print('Reading rows...') 12 | for row in range(2, sheet.get_highest_row() + 1): 13 | # Each row in the spreadsheet has data for one census tract. 14 | state = sheet['B' + str(row)].value 15 | county = sheet['C' + str(row)].value 16 | pop = sheet['D' + str(row)].value 17 | 18 | # Make sure the key for this state exists. 19 | countyData.setdefault(state, {}) 20 | # Make sure the key for this county in this state exists. 21 | countyData[state].setdefault(county, {'tracts': 0, 'pop': 0}) 22 | 23 | # Each row represents one census tract, so increment by one. 24 | countyData[state][county]['tracts'] += 1 25 | # Increase the county pop by the pop in this census tract. 26 | countyData[state][county]['pop'] += int(pop) 27 | 28 | # Open a new text file and write the contents of countyData to it. 29 | print('Writing results...') 30 | resultFile = open('census2010.py', 'w') 31 | resultFile.write('allData = ' + pprint.pformat(countyData)) 32 | resultFile.close() 33 | print('Done.') -------------------------------------------------------------------------------- /CH12/updateProduce.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # updateProduce.py - Corrects costs in produce sales spreadsheet. 3 | 4 | import openpyxl 5 | 6 | wb = openpyxl.load_workbook('produceSales.xlsx') 7 | sheet = wb.get_sheet_by_name('Sheet') 8 | 9 | # The produce types and their updated prices 10 | PRICE_UPDATES = {'Garlic': 3.07, 11 | 'Celery': 1.19, 12 | 'Lemon': 1.27} 13 | 14 | # Loop through the rows and update the prices. 15 | for rowNum in range(2, sheet.get_highest_row()): # skip the first row 16 | produceName = sheet.cell(row=rowNum, column=1).value 17 | if produceName in PRICE_UPDATES: 18 | sheet.cell(row=rowNum, column=2).value = PRICE_UPDATES[produceName] 19 | 20 | wb.save('updatedProduceSales.xlsx') -------------------------------------------------------------------------------- /CH12/updatedProduceSales.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonMDev/automate-boring-stuff/3a4123f9f2173e8d031b107021a35018e55418f2/CH12/updatedProduceSales.xlsx -------------------------------------------------------------------------------- /CH13/allminutes.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonMDev/automate-boring-stuff/3a4123f9f2173e8d031b107021a35018e55418f2/CH13/allminutes.pdf -------------------------------------------------------------------------------- /CH13/combinePdfs.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # combinePdfs.py - Combines all the PDFs in the current working directory into 3 | # a single PDF. 4 | 5 | import PyPDF2, os 6 | 7 | # Get all the PDF filenames. 8 | pdfFiles = [] 9 | for filename in os.listdir('.'): 10 | if filename.endswith('.pdf'): 11 | pdfFiles.append(filename) 12 | pdfFiles.sort() 13 | 14 | pdfWriter = PyPDF2.PdfFileWriter() 15 | 16 | # Loop through all the PDF files. 17 | for filename in pdfFiles: 18 | pdfFileObj = open(filename, 'rb') 19 | pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 20 | 21 | # Loop through all the pages (except the first) and add them. 22 | for pageNum in range(1, pdfReader.numPages): 23 | pageObj = pdfReader.getPage(pageNum) 24 | pdfWriter.addPage(pageObj) 25 | 26 | # Save the resulting PDF to a file. 27 | pdfOutput = open('allminutes.pdf', 'wb') 28 | pdfWriter.write(pdfOutput) 29 | pdfOutput.close() -------------------------------------------------------------------------------- /CH13/meetingminutes.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonMDev/automate-boring-stuff/3a4123f9f2173e8d031b107021a35018e55418f2/CH13/meetingminutes.pdf -------------------------------------------------------------------------------- /CH13/meetingminutes2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonMDev/automate-boring-stuff/3a4123f9f2173e8d031b107021a35018e55418f2/CH13/meetingminutes2.pdf -------------------------------------------------------------------------------- /CH13/readPDF.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # readPDF.py - Launches a map in the browser using an address from the 3 | # command line or clipboard. 4 | 5 | import PyPDF2 6 | 7 | pdfFileObj = open('meetingminutes.pdf', 'rb') 8 | pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 9 | pdfReader.numPages 10 | pageObj = pdfReader.getPage(0) 11 | pageObj.extractText() 12 | print(pageObj.extractText()) 13 | -------------------------------------------------------------------------------- /CH14/example.csv: -------------------------------------------------------------------------------- 1 | 4/5/2014 13:34,Apples,73 2 | 4/5/2014 3:41,Cherries,85 3 | 4/6/2014 12:46,Pears,14 4 | 4/8/2014 8:59,Oranges,52 5 | 4/10/2014 2:07,Apples,152 6 | 4/10/2014 18:10,Bananas,23 7 | 4/10/2014 2:40,Strawberries,98 8 | -------------------------------------------------------------------------------- /CH14/headerRemoved/example.csv: -------------------------------------------------------------------------------- 1 | 4/5/2014 3:41,Cherries,85 2 | 4/6/2014 12:46,Pears,14 3 | 4/8/2014 8:59,Oranges,52 4 | 4/10/2014 2:07,Apples,152 5 | 4/10/2014 18:10,Bananas,23 6 | 4/10/2014 2:40,Strawberries,98 7 | -------------------------------------------------------------------------------- /CH14/headerRemoved/output.csv: -------------------------------------------------------------------------------- 1 | "Hello, world!",eggs,bacon,ham 2 | 1,2,3.141592,4 3 | -------------------------------------------------------------------------------- /CH14/output.csv: -------------------------------------------------------------------------------- 1 | spam,eggs,bacon,ham 2 | "Hello, world!",eggs,bacon,ham 3 | 1,2,3.141592,4 4 | -------------------------------------------------------------------------------- /CH14/quickWeather.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # quickWeather.py - Prints the current weather for a location from the command line. 3 | 4 | ##TODO: requires API key 5 | 6 | import json, requests, sys 7 | 8 | # Compute location from command line arguments. 9 | if len(sys.argv) < 2: 10 | print('Usage: quickWeather.py location') 11 | sys.exit() 12 | location = ' '.join(sys.argv[1:]) 13 | 14 | # Download the JSON data from OpenWeatherMap.org's API 15 | url ='http://api.openweathermap.org/data/2.5/forecast/daily?q=%s&cnt=3' % (location) 16 | response = requests.get(url) 17 | response.raise_for_status() 18 | 19 | # Load JSON data into a Python variable. 20 | weatherData = json.loads(response.text) 21 | 22 | # Print weather descriptions. 23 | w = weatherData['list'] 24 | print('Current weather in %s:' % (location)) 25 | print(w[0]['weather'][0]['main'], '-', w[0]['weather'][0]['description']) 26 | print() 27 | print('Tomorrow:') 28 | print(w[1]['weather'][0]['main'], '-', w[1]['weather'][0]['description']) 29 | print() 30 | print('Day after tomorrow:') 31 | print(w[2]['weather'][0]['main'], '-', w[2]['weather'][0]['description']) 32 | -------------------------------------------------------------------------------- /CH14/removeCsvHeader.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # removeCsvHeader.py - Removes the header from all CSV files in the current 3 | # working directory. 4 | 5 | import csv, os 6 | 7 | os.makedirs('headerRemoved', exist_ok=True) 8 | 9 | # Loop through every file in the current working directory. 10 | for csvFilename in os.listdir('.'): 11 | if not csvFilename.endswith('.csv'): 12 | continue # skip non-csv files 13 | 14 | print('Removing header from ' + csvFilename + '...') 15 | 16 | # Read the CSV file in (skipping first row). 17 | csvRows = [] 18 | csvFileObj = open(csvFilename) 19 | readerObj = csv.reader(csvFileObj) 20 | for row in readerObj: 21 | if readerObj.line_num == 1: 22 | continue # skip first row 23 | csvRows.append(row) 24 | csvFileObj.close() 25 | 26 | # Write out the CSV file. 27 | csvFileObj = open(os.path.join('headerRemoved', csvFilename), 'w', newline='') 28 | csvWriter = csv.writer(csvFileObj) 29 | for row in csvRows: 30 | csvWriter.writerow(row) 31 | csvFileObj.close() 32 | -------------------------------------------------------------------------------- /CH15/alarm.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonMDev/automate-boring-stuff/3a4123f9f2173e8d031b107021a35018e55418f2/CH15/alarm.wav -------------------------------------------------------------------------------- /CH15/calcProd.py: -------------------------------------------------------------------------------- 1 | import time 2 | startTime = time.time() 3 | # Calculate the product of the first 100,000 numbers. 4 | product = 1 5 | for i in range(1, 100000): 6 | product = product * i 7 | endTime = time.time() 8 | print('The result is %s digits long.' % (len(str(product)))) 9 | print('Took %s seconds to calculate.' % (endTime - startTime)) 10 | -------------------------------------------------------------------------------- /CH15/countdown.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # countdown.py - A simple countdown script. 3 | 4 | import time, subprocess 5 | 6 | timeLeft = 10 7 | while timeLeft > 0: 8 | print(timeLeft, end='') 9 | time.sleep(1) 10 | timeLeft = timeLeft - 1 11 | 12 | 13 | # At the end of the countdown, play a sound file. 14 | subprocess.Popen(['start','alarm.wav'], shell=True) -------------------------------------------------------------------------------- /CH15/multidownloadXkcd.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # multidownloadXkcd.py - Downloads XKCD comics using multiple threads. 3 | 4 | import requests, os, bs4, threading 5 | os.makedirs('xkcdmt', exist_ok=True) # store comics in ./xkcd 6 | 7 | def downloadXkcd(startComic, endComic): 8 | for urlNumber in range(startComic, endComic): 9 | # Download the page. 10 | print('Downloading page http://xkcd.com/%s...' % (urlNumber)) 11 | res = requests.get('http://xkcd.com/%s' % (urlNumber)) 12 | res.raise_for_status() 13 | 14 | soup = bs4.BeautifulSoup(res.text) 15 | 16 | # Find the URL of the comic image. 17 | comicElem = soup.select('#comic img') 18 | if comicElem == []: 19 | print('Could not find comic image.') 20 | else: 21 | comicUrl = comicElem[0].get('src') 22 | # Download the image. 23 | print('Downloading image %s...' % (comicUrl)) 24 | res = requests.get('http:'+comicUrl) 25 | res.raise_for_status() 26 | 27 | # Save the image to ./xkcd 28 | imageFile = open(os.path.join('xkcdmt', os.path.basename(comicUrl)), 'wb') 29 | for chunk in res.iter_content(100000): 30 | imageFile.write(chunk) 31 | imageFile.close() 32 | 33 | # Create and start the Thread objects. 34 | downloadThreads = [] # a list of all the Thread objects 35 | for i in range(0, 1400, 100): # loops 14 times, creates 14 threads 36 | downloadThread = threading.Thread(target=downloadXkcd, args=(i, i + 99)) 37 | downloadThreads.append(downloadThread) 38 | downloadThread.start() 39 | 40 | # Wait for all threads to end. 41 | for downloadThread in downloadThreads: 42 | downloadThread.join() 43 | print('Done.') 44 | -------------------------------------------------------------------------------- /CH15/stopwatch.py: -------------------------------------------------------------------------------- 1 | #! python3 2 | # stopwatch.py - A simple stopwatch program. 3 | 4 | import time 5 | 6 | # Display the program's instructions. 7 | print('Press enter to begin. Afterwards, press ENTER to "click" the stopwatch. Press Ctrl-C to quit.') 8 | input() # press Enter to begin 9 | print('Started.') 10 | startTime = time.time() # get the first lap's start time 11 | lastTime = startTime 12 | lapNum = 1 13 | 14 | # Start tracking the lap times. 15 | try: 16 | while True: 17 | input() 18 | lapTime = round(time.time() - lastTime, 2) 19 | totalTime = round(time.time() - startTime, 2) 20 | print('Lap #%s: %s (%s)' % (lapNum, totalTime, lapTime), end='') 21 | lapNum += 1 22 | lastTime = time.time() # reset the last lap time 23 | except KeyboardInterrupt: 24 | # Handle the Ctrl-C exception to keep its error message from displaying. 25 | print('\nDone.') 26 | -------------------------------------------------------------------------------- /CH15/threadDemo.py: -------------------------------------------------------------------------------- 1 | import threading, time 2 | print('Start of program.') 3 | 4 | def takeANap(): 5 | time.sleep(5) 6 | print('Wake up!') 7 | 8 | threadObj = threading.Thread(target=takeANap) 9 | threadObj.start() 10 | 11 | print('End of program.') 12 | -------------------------------------------------------------------------------- /INDEX.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonMDev/automate-boring-stuff/3a4123f9f2173e8d031b107021a35018e55418f2/INDEX.md -------------------------------------------------------------------------------- /LEARNINGLOG.md: -------------------------------------------------------------------------------- 1 | # Learning Log and Table of Contents 2 | 3 | ### Chapter 0: Introduction 4 | - [x] Whom Is This Book For? 5 | - [x] Conventions 6 | - [x] What Is Programming? 7 | - [x] About This Book 8 | - [x] Downloading and Installing Python 9 | - [x] Starting IDLE 10 | - [x] How to Find Help 11 | - [x] Asking Smart Programming Questions 12 | - [x] Summary 13 | 14 | ------------ 15 | 16 | ## Part 1 - The Basics of Python Programming 17 | ### Chapter 1: Python Basics 18 | - [x] Entering Expressions into the Interactive Shell 19 | - [x] The Integer, Floating-Point, and String Data Types 20 | - [x] String Concatenation and Replication 21 | - [x] Storing Values in Variables 22 | - [x] Your First Program 23 | - [x] Dissecting Your Program 24 | - [x] Summary 25 | - [x] Practice Questions 26 | 27 | ### Chapter 2: Flow Control 28 | - [x] Boolean Values 29 | - [x] Comparison Operators 30 | - [x] Boolean Operators 31 | - [x] Mixing Boolean and Comparison Operators 32 | - [x] Elements of Flow Control 33 | - [x] Program Execution 34 | - [x] Flow COntrol Statements 35 | - [x] Importing Modules 36 | - [x] Summary 37 | - [x] Practise Questions 38 | 39 | ### Chapter 3: Functions 40 | - [x] def Statements with Parameters 41 | - [x] Return Values and Return Statements 42 | - [x] The None Value 43 | - [x] Keyword Arguments 44 | - [x] Local and Global Scope 45 | - [x] The Global Statement 46 | - [x] Exception Handling 47 | - [x] A short Program: Guess the number 48 | - [x] Summary 49 | - [x] Practise Questions 50 | - [x] Practise Project: Collatz Sequence 51 | 52 | ### Chapter 4: Lists 53 | - [x] The List Data Type 54 | - [x] Working with Lists 55 | - [x] Augmented Assignment Operator 56 | - [x] Methods 57 | - [x] Example Program: Magic 8 Ball with a list 58 | - [x] List-like Types: Strings and Tuples 59 | - [x] References 60 | - [x] Summary 61 | - [x] Practice Project: Comma Code 62 | - [x] Practice Project: Character Picture Grid 63 | 64 | ### Chapter 5: Dictionaries and Structuring Data 65 | - [x] The Dictionary Data Type 66 | - [x] Pretty Printing 67 | - [x] Using Data Structures to Model Real-World Things 68 | - [x] Summary 69 | - [x] Practise Questions 70 | - [x] Practice Project: Fantasy Game Inventory 71 | 72 | ### Chapter 6: Manipulating Strings 73 | - [x] Working with Strings 74 | - [x] Useful String Methods 75 | - [x] Project: Secret Password Locker 76 | - [x] Project: Adding Bullets to a Wiki Mark-up 77 | - [x] Summary 78 | - [x] Practise Questions 79 | - [x] Practise Project: Table Printer 80 | 81 | ------------ 82 | 83 | ## Part 2 - Automating Tasks 84 | ### Chapter 7: Pattern Matching with Regular Expressions 85 | - [x] Finding Patterns of Text Without Regular Expressions 86 | - [x] Finding Patterns of Text Without Regular Expressions 87 | - [x] More Pattern Matching with Regular Expressions 88 | - [x] Greedy and Non-Greedy Matching 89 | - [x] The Findall() Method 90 | - [x] Character Classes 91 | - [x] Making Your Own Character Classes 92 | - [x] The Caret and Dollar Sign Characters 93 | - [x] The Wildcard Character 94 | - [x] Review ofRegex Symbols 95 | - [x] Case Insensitive Matching 96 | - [x] Substituting Strings with the sub() Method 97 | - [x] Managing Complex Regexes 98 | - [x] Combining re.IOGNORECASE, re.DOTALL and re.VERBOSE 99 | - [x] Project: Phone Number and Email Address Extractor 100 | - [x] Summary 101 | - [x] Practise Questions 102 | 103 | ### Chapter 8: Reading and Writing Files 104 | - [x] File and File Paths 105 | - [x] The os.path Module 106 | - [x] The File Reading/Writing Process 107 | - [x] Saving Variables with the Shelve Method 108 | - [x] Saving Variables with the pprint.pformat() Function 109 | - [x] Project: Generating Random Quiz Files 110 | - [x] Project: Multiclipboard 111 | - [x] Summary 112 | - [x] Practise Questions 113 | 114 | ### Chapter 9: Organizing Files 115 | - [x] The shutil Module 116 | - [x] Walking a Directory Tree 117 | - [x] Compressing Files with the zipfile Module 118 | - [x] Project: Renaming Files with American-Style Dates to European-Style Dates 119 | - [x] Project: Backing up a Folder into a ZIP File 120 | - [x] Summary 121 | - [x] Practise Questions 122 | 123 | ### Chapter 10: Debugging 124 | - [x] Raising Exceptions 125 | - [x] Getting Traceback as String 126 | - [x] Assertions 127 | - [x] Logging 128 | - [x] IDLEs Debugger 129 | - [x] Summary 130 | - [x] Practise Questions 131 | 132 | ### Chapter 11: Web Scraping 133 | - [x] Project: mapIt with the webbrowser module 134 | - [x] Downloading Files from the Web with request Module 135 | - [x] Saving Downloaded Files to the Hard Drive 136 | - [x] HTML 137 | - [x] Parsing HTML with BeatifulSoup Module 138 | - [x] Project: Im Feeling lucky Google Search 139 | - [x] Project: Downloading All XKCD Comics 140 | - [x] Controlling the Browser with the Selinium Module 141 | - [x] Summary 142 | - [x] Practise Questions 143 | 144 | ### Chapter 12: Working with Excel Spreadsheets 145 | - [x] Excel Documents 146 | - [x] Installing the openpyxl Module 147 | - [x] Reading Excel Documents 148 | - [x] Opening Excel Documents with OpenPyXL 149 | - [x] Getting Sheets from the Workbook 150 | - [x] Getting Cells from the Sheets 151 | - [x] Converting Between Column Letters and Numbers 152 | - [x] Getting Rows and Columns from the Sheets 153 | - [x] Workbooks, Sheets, Cells 154 | - [x] Project: Reading Data from a Spreadsheet 155 | - [x] Writing Excel Documents 156 | - [x] Creating and Saving Excel Documents 157 | - [x] Creating and Removing Sheets 158 | - [x] Writing Values to Cells 159 | - [x] Project: Updating a Spreadsheet 160 | - [x] Setting the Font Style of Cells 161 | - [x] Font Objects 162 | - [x] Formulas 163 | - [x] Adjusting Rows and Columns 164 | - [x] Setting Row Height and Column Width 165 | - [x] Merging and Unmerging Cells 166 | - [x] Freeze Panes 167 | - [x] Charts 168 | - [x] Summary 169 | - [x] Practise Questions 170 | 171 | ### Chapter 13: Working with PDF and Word Documents 172 | - [x] PDF Documents 173 | - [x] Decrypting PDFs 174 | - [x] Creating PDFs 175 | - [x] Project: Combining Select Pages from Many PDFs 176 | - [x] Word Documents 177 | - [x] Reading Word Documents 178 | - [x] Getting the Full Text from a .docx File 179 | - [x] Styling Paragraph and Run Objects 180 | - [x] Creating Word Documents with Nondefault Styles 181 | - [x] Run Attributes 182 | - [x] Writing Word Documents 183 | - [x] Adding Headings 184 | - [x] Adding Line and Page Breaks 185 | - [x] Adding Pictures 186 | - [x] Summary 187 | - [x] Practise Questions 188 | 189 | ### Chapter 14: Working with CSV Files and JSON Data 190 | - [x] The CSV Module 191 | - [x] Reader Objects 192 | - [x] Reading Data from Reader Objects in a for Loop 193 | - [x] Writer Objects 194 | - [x] The delimiter and lineterminator Keyword Arguments 195 | - [x] Project: Removing the Header from CSV Files 196 | - [x] JSON and APIs 197 | - [x] The JSON Module 198 | - [x] Project: Fetching Current Weather Data 199 | - [x] Summary 200 | - [x] Practise Questions 201 | 202 | ### Chapter 15: Time, Scheduling Tasks, and Launching Programs 203 | - [x] The time Module 204 | - [x] Project: Super Stopwatch 205 | - [x] The datetime Module 206 | - [x] The timedelta Data Type 207 | - [x] Review of Python’s Time Functions 208 | - [x] Multithreading 209 | - [x] Passing Arguments to the Thread’s Target Function 210 | - [x] Project: Multithreaded XKCD Downloader 211 | - [x] Launching Other Programs from Python 212 | - [x] Passing Command Line Arguments to Popen() 213 | - [x] Task Scheduler, launchd, and cron 214 | - [x] Opening Websites with Python 215 | - [x] Running Other Python Scripts 216 | - [x] Opening Files with Default Applications 217 | - [x] Project: Simple Countdown Program 218 | - [x] Summary 219 | - [x] Practise Questions 220 | 221 | ### Chapter 16: Sending Email and Text Messages 222 | ### Chapter 17: Manipulating Images 223 | ### Chapter 18: Controlling the Keyboard and Mouse with GUI Automation 224 | 225 | ------------ 226 | 227 | ## APPENDIX 228 | ### A - Installing Third-Party Modules 229 | ### B - Running Programs 230 | ### C - Answers to Practice Questions 231 | 232 | 233 | 234 | --------------------- 235 | ## Chapter 1: Title 236 | ### Section 1: Title 237 | #### Sub-section 1: Title 238 | - [x] File: path.ext 239 | - [x] Text. 240 | - [ ] Text. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Automate the Boring Stuff 2 | ## Practical Programming for Total Beginners 3 | 4 | These are my notes from working through the book 5 | [*Automate the boring Stuff*](https://automatetheboringstuff.com/) 6 | by Al Sweigart and published in 2015. 7 | 8 | ### Synopsis taken from the book. 9 | 10 | Everyone should learn to code, but not everyone needs to become a software engineer or computer scientist. Automate the Boring Stuff with Python is written for office workers, students, administrators, and anyone who uses a computer to learn how to code small, practical programs to automate tasks on their computer. 11 | 12 | - [x] Have a folder with thousands of files that need to be renamed? 13 | - [x] Need to look through thousands of rows in an Excel spreadsheet looking for ones to update? 14 | - [x] Have to pull text off of several web pages? 15 | - [x] Want to copy the data from hundreds of PDFs? 16 | - [x] Have any tedious computer task that you wish you had an intern for? 17 | 18 | Normally this would involve hours of mindless clicking and typing. But programming your computer to do it will save you time and effort. --------------------------------------------------------------------------------