2016-10-15 10 views
0

私が持っているといいますかstring = "Nobody will give me pancakes anymore"文字列のサブ要素を数えますか?

文字列の各単語を数えたいと思います。だから私はstring.split()を取得して['Nobody', 'will', 'give', 'me', 'pancakes', 'anymore']を得るためにリストを取得します。

しかし、私はlen(string[0])を入力環境によって'Nobody'の長さを知りたいとき、それは0番目の要素だけで'N'ない'Nobody'と思いますので、それだけで、私に1を与えます。

単語全体の長さを確実に確認するためには、その1つの要素ではなく、何が必要ですか?

+3

を行うことができますので、新しい変数に 'のstring.Split()'結果を保存し、*その*の最初の要素の長さを取ります。 –

+0

@MartijnPieters私はそれを試みていますが、SyntaxError:関数呼び出しに割り当てることができません。 – Stefan

+0

は、間違った場所を割り当てるための構文を持っているようです。私の答えを見てください。 –

答えて

4

string.split()コールの結果を無視して、最初の文字はstring[0]です。

分割結果を格納します。

words = string.split() 
first_worth_length = len(words[0]) 

デモ:

>>> string = "Nobody will give me pancakes anymore" 
>>> words = string.split() 
>>> words[0] 
'Nobody' 
>>> len(words[0]) 
6 
+0

ああ、私はそれを今得ました!私は変数を整理していませんでした。どうもありがとうございます! – Stefan

1

うん、string[0]はあなたの文についてだけ'N'

です...

I want to count each word in the string

>>> s = "Nobody will give me pancakes anymore" 
>>> lens = map(lambda x: len(x), s.split()) 
>>> print lens 
[6, 4, 4, 2, 8, 7] 

だからそれは、個々の単語を含むリストです、その後、あなたはlens[0]

0
words = s.split() 
d = {word : len(word) for word in words} 

or 

words = s.split() 
d = {} 

for word in words: 
    if word not in d: 
     d[word]=0 
    d[word]+=len(word) 

In [15]: d 
Out[15]: {'me': 2, 'anymore': 7, 'give': 4, 'pancakes': 8, 'Nobody': 6, 'will': 4} 
In [16]: d['Nobody'] 
Out[16]: 6 
+0

だから、 'd = {単語:単語の単語のlen(単語)}'?なぜdefaultdict? –

+0

私はもっと読みやすい方法でそれを書こうとしていました。私はその提案に対して非常に感謝の返事を変更しました。 –

関連する問題