pythondictionarysearch

Searching Python dictionary for string


I have a dictionary of cities derived from a .csv. I am trying to allow users to search for a city, and have my program return the data for that city. However, I am not understanding how to write a "for" loop that iterates through the dictionary. Any advice?

Code:

import csv

#Step 4. Allow user to input a city and year
myCity = input('Pick a city: ')
myYear = ('yr'+(input('Choose a year you\'re interested in: ')))

#Step 1. Import and read CityPop.csv
with open(r'C:\Users\Megan\Desktop\G378_lab3\CityPop.csv') as csv_file:
    reader = csv.DictReader(csv_file)

    #Step 2. Build dictionary to store .csv data
    worldCities = {}

    #Step 3. Use field names from .csv to create key and access attribute values
    for row in reader:
            worldCities[row['city']] = dict(row)        

    #Step 5. Search dictionary for matching values
    for row in worldCities:
            if dict(row[4]) == myCity:
                    pass
            else:
                    print('City not found.')
    print (row)

Solution

  • if myCity in worldCities:
        print (worldCities[myCity])
    else:
        print('City not found.')
    

    If all you want is just to print either the found values or 'City not found.' if there are no corresponding values, then you can use much shorter code

    print (worldCities.get(myCity,'City not found.'))
    

    the get method of the dictionary object will return the value corresponding to the passed in key (first argument) and if the key do not exist it returns the default value which is the second argument of the get method. If no default value is passed a NoneType object is returned