Способ объединения подстрок в словарных клавишах

Есть ли быстрый способ обрезать пробелы в словарных ключах, сохраняя значения словаря? Может быть, перечислить или словарь всеобъемлющего метода.

Я могу сделать это с помощью .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] } 

Работает диктофон:

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

Обратите внимание: если вы используете python2, вы должны заменить .items() на .iteritems() чтобы избежать создания промежуточного списка.

Довольно просто с петлей или пониманием:

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

Если вы хотите сохранить личность вашего 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"] так как они одинаковы.