0

次のようなタプルの Python リストがあります。

lst = [(22, -150.0), (23, -150.0), (18, -148.5), (15, -99.4), (5, -75.75), (4, -49.2), (13, -49.0), (9, -41.3), (20, -25.5), (17, -22.3), (10, -13.1), (16, -12.5), (14, -9.8), (3, -8.5), (1, -8.4), (12, -1.5), (7, -0.6), (2, -0.4), (6, 1.7), (21, 2.7)]

各タプルの2番目の値がスコアとして使用されるように、それをredisソートセットに渡すにはどうすればよいですか? 試してみzadd(sorted_set, *lst)ましたが、エラーが発生していますvalue is not a valid float

4

1 に答える 1

3

zaddメソッドはredis.StrictRedis、次の形式の引数を期待します

zadd(key, score1, name1, score2, name2, ...)

つまり、内側のタプルも逆にしてアンパックする必要があります。

In [6]: r = redis.StrictRedis(...)

In [8]: r.zadd('sset', *(y for x in lst for y in x[::-1]))
Out[8]: 20

Redis.zadd詳細については、READMEStrictRedis.zaddを参照してください。したがって、代わりに使用する場合(すべきではありません)、タプルを逆にしないでください。redis.Redisredis.StrictRedis

r.zadd('sset', *(y for x in lst for y in x))
于 2016-12-03T15:06:58.090 に答える