Преобразовать значения списка в словаре в верхний / нижний регистр - PullRequest
0 голосов
/ 12 июня 2018

У меня есть словарь в 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

1 Ответ

0 голосов
/ 12 июня 2018

@ User9367133 , не используйте словарь.Он не будет обновлять my_dict, вместо этого он выберет элементы my_dict и создаст новый словарь.

Как только вы выберете любое значение, указанное любым ключом в словаре, проверьте, является ли он списком или нет,Если это список, тогда преобразуйте список строк в нижний регистр.

Если вы хотите первоначально обновить содержимое my_dict, сделайте это.

Попробуйте онлайн на http://rextester.com/KMSLJ9545.

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']}

Если вы все еще предпочитаете использовать словарное понимание для создания нового словаря, аналогичного приведенному выше, то вы можете попробовать следующий код (ноэто не то, что вам нужно).

Попробуйте онлайн на http://rextester.com/CEZ39339.

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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...