Chciałbym wymienić znaki używane w ciągach (posortowany) z funkcją taką:

def foobar(string):
    return ????

string = 'what a nice day'
print foobar(string)

Powinno to wydrukować ciąg acdehintwy

Co byłoby funkcjonowanie foobar ()?

Próbowałem zamówićdict.fromeyses (elementy), ale nie mogę tego posortować

0
FlipFlapFlop 14 sierpień 2014, 21:14

4 odpowiedzi

Najlepsza odpowiedź
s='what a nice day'

print ("".join(set(s.replace(" ",""))))
acedihntwy

A Zestaw wyjmuje duplikaty i s.replace(" ","") usunie spacje

def foobar(s):
    return "".join(set(s.replace(" ","")))

In [4]: foobar("what a nice day")
Out[4]: 'acedihntwy'
1
Padraic Cunningham 14 sierpień 2014, 17:23

Z zestawem zestawu i listy, aby pozbyć się przestrzeni:

"".join([i for i in set(string) if i!=' '])
acedihntwy
0
jrjc 14 sierpień 2014, 17:18

Aby posortować ciąg znaków, możesz użyć wbudowanego sorted. Zwraca listę poszczególnych znaków, które można umieścić razem z string.join. Ponieważ wydaje się, że chcesz, aby każda postać pojawia się tylko raz, odfiltruj duplikaty za pomocą set:

def foobar(string):
    return "".join(sorted(set(string)))

To skutkuje

>>> foobar("what a nice day")
" acdehintwy"
0
hlt 14 sierpień 2014, 17:19

Użyj a Ustaw.

>>> mystring = 'what a nice day'
>>> chars = sorted(set(mystring.replace(" ", "")))
>>> print(chars)
['a', 'c', 'd', 'e', 'h', 'i', 'n', 't', 'w', 'y']
>>> "".join(chars)
'acdehintwy'
0
MattDMo 14 sierpień 2014, 17:23