Как мне сохранить изменения, внесенные в значения словаря, в себя?

#python #list #dictionary #tuples

#python #Список #словарь #кортежи

Вопрос:

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

         dictionary = {1:[('hello, how are you'),('how is the weather'),('okay 
        then')], 2:[('is this okay'),('maybe It is')]}
  

Я хочу сделать значения одной строкой для каждого ключа. Итак, я создал функцию, которая выполняет эту работу, но я не знаю, как вставить ее обратно в исходный словарь.

моя функция:

 
   def list_of_tuples_to_string(dictionary):
       for tup in dictionary.values():
           k = [''.join(i) for i in tup] #joining list of tuples to make a list of strings
           l = [''.join(k)] #joining list of strings to make a string
           for j in l: 
               ki = j.lower() #converting string to lower case
       return ki
  

вывод, который я хочу:
dictionary = {1:’привет, как дела, как тогда погода’, 2: ‘это нормально, может быть, так и есть’}

Комментарии:

1. просто создайте новый словарь и поместите все элементы внутрь.

2. for k in dictionary: dictionary[k] = " ".join(dictionary[k]).lower().strip()

Ответ №1:

Вы можете просто перезаписать значения для каждого ключа в словаре:

 for key, value in dictionary.items():
    dictionary[key] = ' '.join(value)
  

Обратите внимание на пробел в операторе join, который соединяет каждую строку в списке с пробелом.

Ответ №2:

Это можно сделать даже проще, чем вы думаете, просто используя подсказки понимания

 >>> dictionary = {1:[('hello, how are you'),('how is the weather'),('okay then')], 
                  2:[('is this okay'),('maybe It is')]}
>>> dictionary = {key:' '.join(val).lower() for key, val in dictionary.items()}
>>> print(dictionary)
{1: 'hello, how are you how is the weather okay then', 2: 'is this okay maybe It is'}
  

Теперь давайте рассмотрим метод

  1. мы перебираем ключи и значения в словаре с dict.items()
  2. назначьте ключ как таковой вместе со значением в виде строки, состоящей из каждого элемента в списке.
  3. Элементы объединяются одним пробелом и устанавливаются в нижний регистр.

Комментарии:

1. Он выдает мне сообщение об ошибке, в котором говорится, что ожидается str и найден кортеж!

Ответ №3:

Попробуйте:

 for i in dictionary.keys():
    dictionary[i]=' '.join(updt_key.lower() for updt_key in dictionary[i])