web-dev-qa-db-ja.com

Python APIを使用してRedisで複数の要素でsaddを使用するにはどうすればよいですか?

次の例を検討してください

>>import redis
>>redis_db_url = '127.0.0.1'
>>r = redis.StrictRedis(Host = redis_db_url,port = 6379,db = 0)
>>r.sadd('a',1)
>>r.sadd('a',2)
>>r.sadd('a',3)
>>r.smembers('a')

[+]出力:set(['1'、 '3'、 '2'])

>>r.sadd('a',set([3,4]))
>>r.smembers('a')

[+]出力:set(['1'、 '3'、 '2'、 'set([3、4])'])

 >>r.sadd('a',[3,4])
 >>r.smember('a')

[+] set(['1'、 '[3、4]'、 '3'、 '2'、 'set([3、4])'])

https://redis-py.readthedocs.org/en/latest/ sadd(name、* values)の公式ドキュメントによると、名前を設定するために値を追加します

それで、それはバグですか、それとも私は何かが足りませんか?

11
Sourav Sarkar

構文が表示されたら*values引数リストでは、関数が可変数の引数を取ることを意味します。

したがって、それを次のように呼びます

r.sadd('a', 1, 2, 3)

Splat演算子を使用してイテラブルをアンパックすると、イテラブルを渡すことができます。

r.sadd('a', *set([3, 4]))

または

r.sadd('a', *[3, 4])
28
nneonneo

次のことを考慮してください。

r.sadd('a', 1, 2, 3)

それでうまくいくはずです。

1
Itamar Haber