Voy a escribir un programa que toma algunas líneas y las traduce a una sola línea, pero desafortunadamente, tengo un problema al agregar elementos poco comunes. esto es lo que he hecho hasta ahora:
List_of_sentences = []
for line in range(int(input())):
List_of_sentences.append(input().strip().split())
Sample_sentence = input().split()
Final_list = []
for lists in List_of_sentences:
for elements in Sample_sentence:
if elements in lists:
Final_list.append(lists[0])
else:
Final_list.append(elements)
print(' '.join(Final_list))
Por ejemplo, considere estas dos listas:
List_of_sentences = [['man', 'I', 'je', 'ich'], ['kheili', 'very', 'très', 'sehr'], ['alaghemand', 'interested', 'intéressé', 'interessiert'], ['barnamenevisi', 'programming', 'laprogrammation', 'Programmierung']]
Sample_sentence = ['I', 'am', 'very', 'interested', 'in', 'programming']
Tiene que devolver esto:
man am kheili alaghemand in barnamenevisi
Pero en vez:
man kheili alaghemand barnamenevisi
Mi problema es con otra parte
Cualquier ayuda es muy apreciada
5 respuestas
Tu bucle parece un poco desordenado. Debería ser como este orden
List_of_sentences = []
for line in range(int(input())):
List_of_sentences.append(input().strip().split())
Sample_sentence = input().split()
Final_list = []
for elements in Sample_sentence: #this for loop should be first
var = None
for lists in List_of_sentences: # this for loop should be second
if elements in lists:
#Final_list.append(lists[0])
var = lists[0]
break
Final_list.append(var if var else elements)
print(' '.join(Final_list))
Esto es lo que he probado y funciona:
List_of_sentences = [
['man', 'I', 'je', 'ich'],
['kheili', 'very', 'très', 'sehr'],
['alaghemand', 'interested', 'intéressé', 'interessiert'],
['barnamenevisi', 'programming', 'laprogrammation', 'Programmierung']
]
Sample_sentence = ['I', 'am', 'very', 'interested', 'in', 'programming']
Final_list = []
for elements in Sample_sentence:
found = False
for lists in List_of_sentences:
if elements in lists:
Final_list.append(lists[0])
found = True
if not found:
Final_list.append(elements)
print(' '.join(Final_list))
El problema con su código es que siempre agregará un elemento si no se encuentra en lugar de agregarlo una vez y continuar con el siguiente elemento
Puedes probar algo como esto:
for elements in Sample_sentence: # since you need to check for elements in the sample sentence in all lists, this should be the outer loop
present = False
for lists in List_of_sentences:
if elements in lists:
Final_list.append(lists[0])
present = True
if not present:
Final_list.append(elements)
Esto funciona para mi
for word in Sample_sentence:
append = False
for list in List_of_sentences:
for translation in list:
if (translation == word):
Final_list.append(list[0])
append = True
if (not append):
Final_list.append(word)
print(' '.join(Final_list))
La salida es así porque está iterando sobre cada lista y para cada lista, está iterando sobre cada elemento en la oración de muestra, por lo tanto, primero, buscará si alguno de los elementos de la oración de muestra coincide en la primera lista o no ("I" coincidirá), luego insertará el primer elemento de la lista, es decir, "hombre" en la lista final. para la segunda lista, "muy" coincidirá, por lo tanto, insertará el primer elemento de la segunda lista, es decir, "kheili" en la lista final. Por lo tanto, la lista final sería como: ["hombre", "kheili" ....], que es lo que tienes. Esto explica el problema que está encontrando.
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.