我试图让“inp==3:”生成一个条形图,其中包含代码中列出的前5个填充状态。我一直得到下面列出的错误,但我无法找出它。有人请帮忙
`
if inp == 3:
sorted_states = sorted(
state, key=lambda i: i['population'], reverse=True)
fig = plt.figure(figsize=(10, 5))
sorted_states_names = []
sorted_states_populations = []
for x in sorted_states[:5]:
sorted_states_names.append(x["state"])
sorted_states_populations.append(x["population"])
# creating the bar plot
plt.bar(sorted_states_names, sorted_states_populations,
width=0.4)
plt.show()
`
错误:
sorted_states = sorted(state, key=lambda i: i['population'], reverse=True)
TypeError: list indices must be integers or slices, not str
这是完整的代码…我更新了它,因为有人评论说,拥有完整的代码可能会有帮助,这样你就可以把它放在自己身上..我只是想节省发布完整代码的时间:
`
import numpy as np
import matplotlib.pyplot as plt
state = []
state.append ( ['Alabama', 'Montgomery', 4887680, 'Camellia'] )
state.append ( ['Alaska', 'Juneau', 735139, 'Forget-Me-Not'] )
state.append ( ['Arizona', 'Phoenix', 7158020, 'Suguaro Catus
Blossom'] )
state.append ( ['Arkansas', 'Little Rock', 3009730, 'Apple Blossom'] )
state.append ( ['California', 'Sacremento ', 39461600, 'Golden Poppy']
)
state.append ( ['Colorado', 'Denver', 5691290, 'Mountain Columbine'] )
state.append ( ['Connecticut', 'Hatford', 3571520, 'Mountain Laurel']
)
state.append ( ['Delaware', 'Dover', 965479, 'Peach Blossom'] )
state.append ( ['Florida', 'Tallahassee', 21244300, 'Orange Blossom']
)
state.append ( ['Georgia', 'Atlanta', 10511100, 'Cherokee Rose'] )
state.append ( ['Hawaii', 'Honolulu', 1420590, 'Red Hibiscus'] )
state.append ( ['Idaho', 'Boise', 1750540, 'Syringa'] )
state.append ( ['Illinois', 'Springfield', 12723100, 'Violet'] )
state.append ( ['Indiana', 'Indianaplois', 6695500, 'Peony'] )
state.append ( ['Iowa', 'Des Moines', 3148620, 'Wild Rose'] )
state.append ( ['Kansas', 'Topeka', 2911360, 'Sunflower'] )
state.append ( ['Kentucky', 'Frankfort', 4461150, 'Goldenrod'] )
state.append ( ['Louisiana', 'Baton Rouge', 4659690, 'Magnolia'] )
state.append ( ['Maine', 'Augusta', 1339060, 'Pine Cone & Tassel'] )
state.append ( ['Maryland', 'Annapolis', 6035800, 'Black-eyed Susan']
)
state.append ( ['Massachusettes', 'Boston', 6882640, 'Mayflower'] )
state.append ( ['Michigan', 'Lansing', 9984070, 'Apple Blossom'] )
state.append ( ['Minniesota', 'St.Paul', 5606250, 'Lady-Slipper'] )
state.append ( ['Mississippi', 'Jackson', 2981020, 'Magnolia'] )
state.append ( ['Missouri', 'Jefferson City', 6121620, 'Hawthorne'] )
state.append ( ['Montana', 'Helena', 1060660, 'Bitterroot'] )
state.append ( ['Nebraska', 'Lincoln', 1925610, 'Goldenrod'] )
state.append ( ['Nevada', 'Carson City', 3027340, 'Sagebrush'] )
state.append ( ['New Hampshire', 'Concord', 1353460, 'Purple Lilac'] )
state.append ( ['New Jersey', 'Trenton', 8886020, 'Violet'] )
state.append ( ['New Mexico', 'Santa Fe', 2092740, 'Yucca'] )
state.append ( ['New York', 'Albany', 19530400, 'Rose'] )
state.append ( ['North Carolina', 'Raleigh', 10381600, 'Flowering
Dogwood'] )
state.append ( ['North Dakota', 'Bismark', 758080, 'Prairie Rose'] )
state.append ( ['Ohio', 'Columbus', 11676300, 'Scalet Carnation'] )
state.append ( ['Oklahoma', 'Oklahoma City', 3940240, 'Mistletoe'] )
state.append ( ['Oregon', 'Salem', 4181890, 'Oregon Grape'] )
state.append ( ['Pennsylvania', 'Harrisburg', 12800900, 'Mountain
Laurel'] )
state.append ( ['Rhode Island', 'Providence', 1058290, 'Violet'] )
state.append ( ['South Carolina', 'Columbia', 5084160, 'Yellow
Jessamine'] )
state.append ( ['South Dakota', 'Pierre', 878698, 'Pasque flower'] )
state.append ( ['Tennessee', 'Nashville', 6771630, 'Iris'] )
state.append ( ['Texas', 'Austin', 28628700, 'Bluebonnet'] )
state.append ( ['Utah', 'Salt Lake City', 3153550, 'Sego Lily'] )
state.append ( ['Vermont', 'Montpelier', 624358, 'Red Clover'] )
state.append ( ['Virginia', 'Richmond', 8501290, 'Dogwood'] )
state.append ( ['Washington', 'Olympia', 7523870, 'Coast
Rhododendron'] )
state.append ( ['West Virginia', 'Charleston', 1804290,
'Rhododendron'] )
state.append ( ['Wisconsin', 'Madison', 5807410, 'Wood Violet'] )
state.append ( ['Wyoming', 'Cheyenne', 577601, 'Indian Paintbrush'] )
state.sort()
def showOptions():
print("1. List data and states in order")
print("2. Show a certain state")
print("3. Make a Bar graph with top 5 highest population states")
print("4. Certain state overall population")
print("5. Exit")
while True:
showOptions()
inp = int(input("Choose an option: "))
if inp == 1:
for state in data:
for j in state:
print(j + ":", state[j])
print()
if inp == 2:
search = input("Input state you wish to search: ")
for state in data:
if state["state"] == search:
for j in state:
print(j + ":", state[j])
print()
break
if inp == 3:
sorted_states = sorted(state, key=lambda i: i[2],
reverse=True)
fig = plt.figure(figsize=(10, 5))
sorted_states_names = []
sorted_states_populations = []
for x in sorted_states[:5]:
sorted_states_names.append(x["state"])
sorted_states_populations.append(x["population"])
# creating the bar plot
plt.bar(sorted_states_names, sorted_states_populations,
width=0.4)
plt.show()
if inp == 4:
state_to_be_modified = input(
"Input state to update population: ")
population = int(
input("Input the increase amount: "))
for state in data:
if state["state"] == state_to_be_modified:
state["population"] += population
break
if inp == 5:
print("Thanks you for stopping by")
exit(0)
else:
print("Invalid input. try another")
`
您传递的是一个列表,而不是命令。请尝试
相关问题 更多 >
编程相关推荐