【问题标题】:Way to combine substrings in dictionary keys在字典键中组合子字符串的方法
【发布时间】:2016-04-06 08:06:10
【问题描述】:

有没有一种快速的方法可以在保留字典值的同时截断字典键中的空格?也许是枚举或字典综合方法。

我可以使用 .replace(" ", "") 完成此操作,但它创建了一个新列表,其中只有键而不是值。

例子:

cities = {
    "Las Vegas": [36.1215, -115.1739],
    "Los Angeles": [34.0500, -118.2500],
    "Salt Lake City": [40.7500, -111.8833]
}

citiesTruncated = {
    "LasVegas": [36.1215, -115.1739],
    "LosAngeles": [34.0500, -118.2500],
    "SaltLakeCity": [40.7500, -111.8833]
}

【问题讨论】:

    标签: python string dictionary substring


    【解决方案1】:

    如果您想保留dict 的身份,没有那么简单的方法(因为dict 不支持切片)。所以你需要做的是:

    for key in cities:
        new_key = key.replace(' ', '')
        if new_key == key:
            continue
        cities[new_key] = d[key]
        del cities[key]
    

    否则,如果您不需要甚至不想保留身份(truncatedCities 是新创建的dict,与cities 不同),您当然可以使用理解:

    citiesTruncated = {key.replace(" ", ""): value for key, value in cities.items()}
    

    并不是说在第二个解决方案中,即使您最终得到一个新的dict,值仍然相同(不仅相等)-这意味着将某些内容附加到cities["Las Vegas"] 将附加到citiesTruncated["LasVegas"],因为它们是一样的。

    【讨论】:

      【解决方案2】:

      循环或理解非常简单:

      citiesTruncated = {key.replace(' ', ''):value for key,value in cities.items()}
      

      【讨论】:

        【解决方案3】:

        字典理解有效:

        citiesTruncated = {key.replace(" ", ""): value for key, value in cities.items()}
        

        请注意,如果您使用 python2,则应将 .items() 替换为 .iteritems() 以避免创建中间列表。

        【讨论】:

        • 大声笑,相同的答案,几乎相同的时间!
        • 我也打算写同样的:D
        • 嗯,这是 python zen 的一个例子:应该只有一种解决问题的首选方法。我喜欢!
        • 谢谢大家!很有帮助
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 2021-08-22
        相关资源
        最近更新 更多