Как изменить тип значения определенного ключа в словаре в списке? - PullRequest
0 голосов
/ 10 февраля 2020
list = [
   {'rank': '1', 'name': 'Gus’s World Famous Fried Chicken', 'stars': '4.0', 'numrevs': '549', 'price': '$$'}, 
   {'rank': '2', 'name': 'South City Kitchen - Midtown', 'stars': '4.5', 'numrevs': '1777', 'price': '$$'}
]

Мне нужно обновить numrevs до int.

Пока у меня есть это, но я не могу заставить его работать:

list = [dt.update({k : int(v)}) for dt in rankings for k['numrevs'], v in dt.items()]

Ответы [ 2 ]

3 голосов
/ 10 февраля 2020

Для каждого dict в вашем списке создайте новый dict, где значение для каждого ключа совпадает с текущим dict, за исключением значений, которые вы хотите заменить на int.

Здесь я я вызываю текущий список list1, чтобы избежать путаницы между именем переменной и именем встроенного типа.

list2 = [ {k:(int(v) if k=='numrevs' else v) 
          for k,v in d.items()}
            for d in list1 ]
3 голосов
/ 10 февраля 2020

По сути, вы можете сделать это довольно просто:

for d in mylist:
    d["numrevs"] = int(d["numrevs"])

Как замечание: не называйте никакую переменную list. list является встроенной функцией, и перезапись этой функции может привести только к проблемам, поэтому я переименовал список в mylist.

...