Как преобразовать значения списка словарей в строку?

#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. Что я сделал, так это проверил длину каждого значения, поскольку все ваши значения являются списком, если в списке есть один элемент, мы берем этот элемент и делаем его значением ключа