Python - 通过读取文本文件和搜索该字典来创建字典

H. *_*don 6 python dictionary python-3.x

我必须创建一个程序,该程序接受用户对State的输入,并返回States state flower.我必须阅读的以下文本文件称为"state_flowers.txt",它包含以下数据

California,Poppy
West Virginia,Rhododendron
South Dakota,Pasque Flower
Connecticut,Mountain Laurel
New York,Rose
Georgia,Cherokee Rose
Washington,Coast Rhododendron
Virgina,American Dogwood
Arizona,Saguaro Cactus
Hawaii,Pua Aloalo
Alabama,Camelia
Illinois,Violet
Indiana,Peony
Delaware,Peach Blossom
Iowa,Wild Prairie Rose
Kansas,Sunflower
Alaska,Forget Me Not
Lousiana,Magnolia
Maine,White Pine Tassel
Massachusetts,Trailing Arbutus
Michigan,Apple Blossom
Minnesota,Lady Slipper
Mississippi,Magnolia
Missouri,Hawthorn
Montana,Bitterroot
Nebraska,Goldenrod
Nevada,Sagebrush
New Hampshire,Lilac
New Jersy,Violet
New Mexico,Yucca Flower
etc......
Run Code Online (Sandbox Code Playgroud)

我遇到的代码问题是它只会询问状态名称的输入,并且在没有输出的情况下一遍又一遍地继续这样做.这是我到目前为止的代码:

d = {}
myFile = open('state_flowers.txt', 'r')
for line in myFile:
    line2=line.split(",")
    state = line2[0]
    flower = line2[1]
    c = len(flower)-1 
    #Strips the new line symbol
    flower = flower[0:c]
    d[state] = flower 
    #matches each state with its flower

for state, flower in d.items():   
    search = input("Enter state name:")    #user enters input of state
    if state == search:                   
        print(flower, "is the State Flower for", state)
Run Code Online (Sandbox Code Playgroud)

正如我所说的,我所要求的所有程序都是一遍又一遍的输入.所以它这样做:

Enter state name:Maine
Enter state name:Califorina
Enter state name:Texas
Enter state name:
Enter state name:
Run Code Online (Sandbox Code Playgroud)

我觉得好像我非常接近这一点,任何帮助都表示赞赏,并且非常感谢我对错误做出的明确解释!谢谢!

jpp*_*jpp 7

你很亲密 没有必要迭代你的字典.它的美妙之处dict在于它提供O(1)访问价值的钥匙.您可以直接输入并将密钥提供给字典:

search = input("Enter state name:")    #user enters input of state
print(d.get(search), "is the State Flower for", search)
Run Code Online (Sandbox Code Playgroud)

使用Python 3.6+,您可以使用f-strings更清楚地编写它:

print(f'{d.get(search)} is the State Flower for {search}')
Run Code Online (Sandbox Code Playgroud)

如果你的字典中不存在状态d.get(search)将返回None.如果您不想在这种情况下打印任何内容,可以使用以下if声明:

search = input("Enter state name:")    #user enters input of state
if search in d:
    print(f'{d[search]} is the State Flower for {search}')
Run Code Online (Sandbox Code Playgroud)