#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'}
Теперь давайте рассмотрим метод
- мы перебираем ключи и значения в словаре с
dict.items()
- назначьте ключ как таковой вместе со значением в виде строки, состоящей из каждого элемента в списке.
- Элементы объединяются одним пробелом и устанавливаются в нижний регистр.
Комментарии:
1. Он выдает мне сообщение об ошибке, в котором говорится, что ожидается str и найден кортеж!
Ответ №3:
Попробуйте:
for i in dictionary.keys():
dictionary[i]=' '.join(updt_key.lower() for updt_key in dictionary[i])