擅长:python、mysql、java
<p>你的代码的问题是,你停止寻找一个州的城市时,你发生“!”但城市的新部分也用以“州”开头的线表示。
另一个错误是,您每次从一开始就迭代城市,而不是当前所在的州。你知道吗</p>
<pre><code>State_Dict = {}
main_fd = '''\
State Texas
Austin
Houston
Dallas
State Florida
Orlando
Miami
Jacksonville
Naples
!
State California
San Diego
Los Angeles
San Francisco\
'''.splitlines()
for idx, mystate in enumerate(main_fd):
if "State" in mystate:
state_key = "_".join(mystate.split()[1:])
State_Dict[state_key] = []
for cities in main_fd[idx+1:]:
if '!' in cities or "State" in cities:
break
else:
State_Dict[state_key].append(cities.rstrip())
print(State_Dict)
</code></pre>
<p>输出:</p>
<pre><code>{'Florida': ['Orlando', 'Miami', 'Jacksonville', 'Naples'],
'California': ['San Diego', 'Los Angeles', 'San Francisco'],
'Texas': ['Austin', 'Houston', 'Dallas']}
</code></pre>