#python-3.x
#python-3.x
Вопрос:
У меня есть словарь списков, каждый список состоит из 3 элементов, я хочу преобразовать 2-й и 3-й элементы в целые числа из строк
dict = {1:['string', '2', '3',],
2:['string', '2', '3',],
3:['string', '2', '3',],}
чтобы стать:
dict = {1:['string', 2, 3,],
2:['string', 2, 3,],
3:['string', 2, 3,],}
Спасибо
Ответ №1:
Во-первых, не называйте свои словари dict , так как это зарезервированное ключевое слово, и вы не хотите его перезаписывать.
Переходим к вашему решению.
d = {
1: ['string', '23', '3'],
2: ['string', '2', '3'],
3: ['string', '2', '3'],
}
d2 = {
k: [
int(i) if i.isdigit() else i
for i in v
]
for k, v in d.items()
}
Даст вам вывод:
{
1: ['string', '23', '3'],
2: ['string', '2', '3'],
3: ['string', '2', '3']
}
{
1: ['string', 23, 3],
2: ['string', 2, 3],
3: ['string', 2, 3]
}
Комментарии:
1. Внимание : это решение также преобразует первый элемент списка в целое число, если он содержит только цифры! Это не было запрошено OP
Ответ №2:
Если в вашем словаре много элементов, вы можете не создавать второй словарь в памяти, а изменить существующий на месте:
data = {
1: ['string', '2', '3'],
2: ['string', '2', '3'],
3: ['string', '2', '3'],
}
for v in data.values():
v.append(int(v.pop(1)))
v.append(int(v.pop(1)))
print(data)
Вывод:
{1: ['string', 2, 3], 2: ['string', 2, 3], 3: ['string', 2, 3]}