在Python字典中搜索字符串

时间:2019-03-10 20:40:27

标签: python dictionary search

我有一个源自.csv的城市字典。我试图让用户搜索城市,并让我的程序返回该城市的数据。但是,我不理解如何编写一个遍历字典的“ for”循环。有什么建议吗?

代码:

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)

2 个答案:

答案 0 :(得分:1)

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

如果只想打印找到的值或“找不到城市”。如果没有相应的值,则可以使用更短的代码

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

字典对象的get方法将返回与传入键(第一个参数)相对应的值,如果该键不存在,它将返回默认值,该默认值是get方法的第二个参数。如果未传递默认值,则返回NoneType对象

答案 1 :(得分:0)

  

字典是键-值对的集合。例如:

Let's create a dictionary with city - state pairs.

cities = {"New York City":"NY", "San Jose":"CA"}

In this dict, we have Key's as City and Values as their respective states. To iterate over this dict you can write a for loop like this:

for city, states in cities.items():
    print(city, states)

> "New York", "NY"
"San Jose", "CA"

For your example:

for key, value in worldCities.items():
    if key == "something":
        "then do something"
    else:
        "do something else"