【问题标题】:How to combine attributes of like features in Python如何在 Python 中组合相似特征的属性
【发布时间】:2012-01-06 20:20:35
【问题描述】:

我有一个包含 Street 和 Page 属性的文本文件。街道可能出现在多个页面中,这是我的文本文件现在的外观示例:

街道 页面

A 街 3 号

A 街 4 号

5 街

B 街 21 号

B 街 22 号

使用 python,我试图将类似的道路组合成一个记录,并将该道路的每个相应页面组合成一个属性。这是我希望我的文本文件外观的示例:

街道 页面

A 街 3、4、5 号

B 街 21、22 号

如果有人能给我任何关于如何使用 Python 完成此任务的提示,我将非常感激

【问题讨论】:

  • 到目前为止你有什么代码?或者您是否正在寻找关于编程的良好介绍(使用 Python)?
  • 我对 python 还是很陌生。我一直在玩一些代码,但我怀疑它是否值得发布。到目前为止我接受的基础培训还没有涉及到这样的内容,所以我只是想大致了解一下这将如何工作以及我应该关注什么模块

标签: python arcgis many-to-one


【解决方案1】:

您可以使用字典将街道名称映射到列表,如下所示:

streets = {}
for line in records:
    street, space, page = line.partition(' ')
    if street not in streets:
        streets[street] = []
    streets[street].append(page)

然后您可以浏览字典并输出结果。

【讨论】:

    【解决方案2】:

    看看collections.defaultdict

    import collections
    streets = collections.defaultdict(list)
    with open('a_street_page.txt') as f:
        for line in f:
            street_name, number = line.split()
            streets[street_name].append(number)
    

    defaultdict 所做的是在您访问一个尚不存在的键时调用为其构造函数提供的工厂,并将结果分配给该键。这使您不必检查密钥是否已经存在。您的场景正是 defaultdict 的用途。

    【讨论】:

    • 你们太棒了。我对 python 还很陌生,所以我必须对这些想法进行一些尝试。谢谢!
    猜你喜欢
    • 2019-07-10
    • 2013-04-15
    • 1970-01-01
    • 2021-05-20
    • 2014-02-26
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多