将清理后的数据附加到字典时获取重复值

2024-10-05 10:55:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个txt文件,需要提取一些值并组织为字典。
这是需要的格式{State: Town}

例如{'Alabama': 'Auburn', Alabama: 'Florence'....'Wyoming': 'Laramie'}

这是我的密码:

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

但是,我的代码并不是我想要它做的。感觉就像我正在存储先前提取的“region”值并将其附加到下一个状态。所以逻辑有问题,我不确定到底是什么

[['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'],...]

正如你所看到的,我得到了“费尔班克斯”两次,第一次是附加到阿拉斯加,这是正确的,第二次是附加到亚利桑那州,这是不正确的。我所有的州都发生过这种事

...
 ['Alaska', 'Fairbanks'],
 ['Arizona', 'Fairbanks'],
...
 ['Wisconsin', 'Whitewater'],
 ['Wyoming', 'Whitewater'],
 ['Wyoming', 'Laramie']]

Tags: txtoutputlinecurrentregionsplitstatealabama
2条回答

如果你真的想把这些值放到字典里

with open('my.txt') as file:之前,放入country = dict()

在循环中你可以用

if (region != ""):
        output.append([current_state, region])
        if current_state in country:

            country[current_state].append(region)
        else:
            country[current_state] = []
            country[current_state].append(region)
        region = ''

对于您的问题,region = ''将解决这个问题,但要放入字典中,上面的代码将有所帮助,这将列出一个特定键的列表。快乐的编码

您没有重置区域,因此它将存储以前的结果

if (region != ""):
  output.append([current_state, region])

更改为

if (region != ""):
  output.append([current_state, region])
  region = ''

相关问题 更多 >

    热门问题