我在python
中有一本字典,如下所示
my_dict = {u'customer': [u'GS808E', u'GS810EMX'], u'tablets': [u'Apple IPAD PRO', u'Apple IPAD MINI', u'IPAD'], u'gaming_consoles': [u'SONY PLAYSTATION 4', u'XBOX ONE S', u'PLAYSTATION'], u'range_of_days': 14 }
我想将此values
中的所有dictionary
转换为lowercase
或uppercase
我在下面做过。
new_dict = {k:[i.lower() for i in v] for k,v in my_dict.items()}
我在Python 2.7
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <dictcomp>
TypeError: 'int' object is not iterable
答案 0 :(得分:3)
@ User9367133 ,请勿使用词典理解。它不会更新my_dict
而是会提取my_dict
的元素并创建新词典。
一旦你选择了字典中任何一个键所指向的任何值,请检查它是否是一个列表。如果是列表,则将字符串列表转换为小写。
如果您想最初更新my_dict
的内容,请执行以下操作。
my_dict = {u'customer': [u'GS808E', u'GS810EMX'], u'tablets': [u'Apple IPAD PRO', u'Apple IPAD MINI', u'IPAD'], u'gaming_consoles': [u'SONY PLAYSTATION 4', u'XBOX ONE S', u'PLAYSTATION'], u'range_of_days': 14 };
for key in my_dict:
if type(my_dict[key]) == type([]):
for index, item in enumerate(my_dict[key]):
my_dict[key][index] = item.lower();
print my_dict
»输出
{'gaming_consoles': ['sony playstation 4', 'xbox one s', 'playstation'], 'range_of_days': 14, 'tablets': ['apple ipad pro', 'apple ipad mini', 'ipad'], 'customer': ['gs808e', 'gs810emx']}
如果您仍然希望使用字典理解来创建与上面相同的新字典,那么您可以尝试以下代码(但这不是您想要的)。
my_dict = {u'customer': [u'GS808E', u'GS810EMX'], u'tablets': [u'Apple IPAD PRO', u'Apple IPAD MINI', u'IPAD'], u'gaming_consoles': [u'SONY PLAYSTATION 4', u'XBOX ONE S', u'PLAYSTATION'], u'range_of_days': 14 };
my_dict = { key: ([item.lower() for item in my_dict[key]] if type(my_dict[key]) == type([]) else my_dict[key]) for key in my_dict}
print my_dict
»输出
{u'customer': [u'gs808e', u'gs810emx'], u'tablets': [u'apple ipad pro', u'apple ipad mini', u'ipad'], u'gaming_consoles': [u'sony playstation 4', u'xbox one s', u'playstation'], u'range_of_days': 14}