Tengo una lista con valores de cadena:

iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']

Estoy tratando de hacerlo, así que itero sobre las cadenas en la lista, lo condensa. Mi salida esperada es:

['Ok', 'Hi'*4, 'He', 'Hy'*3, 'Hl', 'Gb']

Mi código es:

ix = []

iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']

iwy = list(enumerate(iwx))

for i,x in iwy:
    n = 0
    n += 1
    tz = [iwy[x:i+11] for x in range(0, len(x))]
    print(tz)

Aquí es donde me pierdo. Por favor ayuda.

-1
Kevin 2 oct. 2019 a las 20:11

3 respuestas

La mejor respuesta

No estoy seguro de si esto es lo que desea, pero si su esperanza es contar el número de veces que aparece cada cadena, esta puede ser una solución:

from collections import Counter
[(i,j) for i,j in zip(Counter(iwx).keys(), Counter(iwx).values())]

Tenga en cuenta que si desea tener un diccionario en su lugar (mejor por conveniencia), simplemente use:

dic_name = dict([(i,j) for i,j in zip(Counter(iwx).keys(), Counter(iwx).values())])
1
DarkDrassher34 2 oct. 2019 a las 17:49

Como implican los comentarios, me resulta difícil entender el resultado previsto y el uso de ciertas líneas. A continuación se muestra el código que podría ayudarlo a lograr su resultado de una manera diferente.

iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']
d = {}
# Creating a dictionary to maintain uniqueness of the strings as keys
# And maintain the count of occurrence as values
for i in iwx:
    if i in d:
        d[i] += 1
    else:
        d[i] = 1
print(d)
# d = {'Ok': 1, 'Hi': 4, 'He': 1, 'Hy': 3, 'Hl': 1, 'Gb': 1}

Puede usar OrderedDict si es necesario preservar el orden de la cadena en la lista.

0
Speeeddy 2 oct. 2019 a las 17:42

Creo que su objetivo es contar cuántas veces existe cada valor:

Esto debería funcionar:


ix = []

iwx = ['Ok', 'Hi', 'Hi', 'Hi', 'Hi', 'He', 'Hy', 'Hy', 'Hy', 'Hl', 'Gb']

occurences = {}


for i in range(0, len(iwx)):
        if iwx[i] not in occurences:
            occurences[iwx[i]] = 1
        else:
            occurences[iwx[i]] += 1

print(occurences)

El resultado es :

{'Ok': 1, 'Hi': 4, 'He': 1, 'Hy': 3, 'Hl': 1, 'Gb': 1}
0
Issac Newton 2 oct. 2019 a las 17:46
58206197