【发布时间】:2018-04-05 07:23:56
【问题描述】:
我写了一个函数将字典中的所有键都转换为小写:
def lower_dict_keys(some_dict):
"""Convert all keys to lowercase"""
result = {}
for key, value in some_dict.items():
if type(key) == str:
result[key.lower()] = value
else:
result[key] = value
return result
到目前为止一切顺利。然后我想,嗯,这在字典理解中会更优雅,所以这就是我想出的:
def lower_dict_keys2(some_dict):
return {key.lower(): value for key, value in some_dict.items() if type(key) == str}
这仅在所有键都是字符串时才有效。我有数字键,它们被丢弃:
d1 = {'A':'foo', 'b':'bar', 1:'zip'}
print(lower_dict_keys(d1))
>>>{'a': 'foo', 'b': 'bar', 1: 'zip'}
print(lower_dict_keys2(d1))
>>>{'a': 'foo', 'b': 'bar'}
所以我的问题是:是否可以将此函数编写为字典理解?
【问题讨论】:
-
如果键不是字符串,你想发生什么?
-
就像在原始函数中一样,它应该被原封不动地添加到字典中。
标签: python dictionary