在字典键中组合子串的方法

时间:2016-01-02 02:00:44

标签: python string dictionary substring

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

我可以使用.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]
}

3 个答案:

答案 0 :(得分:4)

字典理解起作用:

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

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

答案 1 :(得分:4)

循环或理解非常简单:

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

答案 2 :(得分:0)

如果您想要保留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"] {1}}因为它们是相同的。