3

私はこのコードを実行します:

def score(string, dic):
    for string in dic:
        word,score,std = string.lower().split()
        dic[word]=float(score),float(std)
        v = sum(dic[word] for word in string)
        return float(v)/len(string)

そして、このエラーを取得します:

word,score,std = string.split()
ValueError: need more than 1 value to unpack
4

3 に答える 3

4

string.lower().split()アイテムが 1 つしかないリストを返すためです。word,score,stdこのリストに正確に 3 人のメンバーが含まれていない限り、これを に割り当てることはできません。つまりstring、正確に 2 つのスペースが含まれます。


a, b, c = "a b c".split()  # works, 3-item list
a, b, c = "a b".split()  # doesn't work, 2-item list
a, b, c = "a b c d".split()  # doesn't work, 4-item list
于 2012-10-20T16:52:34.097 に答える
0
def score(string, dic):
    if " " in dic:
        for string in dic:
            word,score,std = string.lower().split()
            dic[word]=float(score),float(std)
            v = sum(dic[word] for word in string)
            return float(v)/len(string)
    else:
            word=string.lower()
            dic[word]=float(score),float(std)
            v = sum(dic[word] for word in string)
            return float(v)/len(string)

これがあなたが探しているものだと思うので、間違っていたら訂正してください。しかし、これは基本的split()に、分割できるスペースがあるかどうかをチェックし、それに応じて動作します。

于 2012-10-20T16:57:16.663 に答える
0

文字列には単語が 1 つしか含まれていないため、これは失敗します。

string = "Fail"
word, score, std = string.split()

単語の数が変数の数と同じであるため、これは機能します。

string = "This one works"
word, score, std = string.split()
于 2012-10-20T16:53:29.690 に答える