#python #list #dictionary
#python #Список #словарь
Вопрос:
Как преобразовать значения списка словарей в строку?
Мой dict:
dic = {3: ['W'], 2: ['X'], 1: ['Y', 'Z']}
Я хочу, чтобы выходные данные были такими, как показано ниже:
out_dic = {3: 'W', 2: 'X', 1: ['Y', 'Z']}
Я пробовал с помощью приведенного ниже, но не работает. Кто-нибудь может мне помочь в этом:
out_dic = {}
for key, value in dic.items():
if (key == 1) | (key == 2):
out_dic[key].append(value.ToString())
else:
out_dic[key].append(out_dic(i))
print(out_dic)
Ответ №1:
Используя понимание dict. И использовать len()
по значению для определения размера.
Пример:
dic = {3: ['W'], 2: ['X'], 1: ['Y', 'Z']}
print({k: v[0] if len(v) == 1 else v for k, v in dic.items()})
Вывод:
{3: 'W', 2: 'X', 1: ['Y', 'Z']}
Ответ №2:
Давайте возьмем элемент списка, который содержит только один элемент, и поместим этот элемент в качестве значения dic key.
for key,val in dic.items():
if len(val)==1:
dic[key] =val[0]
print(dic)
Комментарии:
1. Спасибо. Он работает нормально. Единственное, нам нужно либо принимать только ‘value’, либо ‘val’ для всех, а не для обоих. Не могли бы вы, пожалуйста, помочь мне понять, когда мы ставим val [0], почему это удаляет список [] из W и X ?
2. мы перебираем словарь. Здесь каждая пара ключ-значение берется как key и val. Что я сделал, так это проверил длину каждого значения, поскольку все ваши значения являются списком, если в списке есть один элемент, мы берем этот элемент и делаем его значением ключа