回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个txt文件,需要提取一些值并组织为字典。<br/>
这是需要的格式<code>{State: Town}</code></p>
<p>例如<code>{'Alabama': 'Auburn', Alabama: 'Florence'....'Wyoming': 'Laramie'}</code></p>
<p>这是我的密码:</p>
<pre><code>with open('my.txt') as file:
output = []
current_state = ""
region = ""
for line in file:
if (len(line.split("[edit]")) == 2):
current_state = line.split("[edit]")[0]
else:
region = line.split(" (")[0]
if (region != ""):
output.append([current_state, region])
return output
</code></pre>
<p>但是,我的代码并不是我想要它做的。感觉就像我正在存储先前提取的“region”值并将其附加到下一个状态。所以逻辑有问题,我不确定到底是什么</p>
<pre><code>[['Alabama', 'Auburn'],
['Alabama', 'Florence'],
['Alabama', 'Jacksonville'],
['Alabama', 'Livingston'],
['Alabama', 'Montevallo'],
['Alabama', 'Troy'],
['Alabama', 'Tuscaloosa'],
['Alabama', 'Tuskegee'],
['Alaska', 'Tuskegee'],
['Alaska', 'Fairbanks'],
['Arizona', 'Fairbanks'],
['Arizona', 'Flagstaff'],
['Arizona', 'Tempe'],
['Arizona', 'Tucson'],...]
</code></pre>
<p>正如你所看到的,我得到了“费尔班克斯”两次,第一次是附加到阿拉斯加,这是正确的,第二次是附加到亚利桑那州,这是不正确的。我所有的州都发生过这种事</p>
<pre><code>...
['Alaska', 'Fairbanks'],
['Arizona', 'Fairbanks'],
...
['Wisconsin', 'Whitewater'],
['Wyoming', 'Whitewater'],
['Wyoming', 'Laramie']]
</code></pre>