精华内容
下载资源
问答
  • 2021-01-06 16:45:47
    #coding:utf8
    import redis
    r =redis.Redis(host="23.226.74.190",port=63279,password="66666666666")
    

    1.Zadd

    Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。
    如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。
    分数值可以是整数值或双精度浮点数。
    如果有序集合 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
    当 key 存在但不是有序集类型时,返回一个错误。

    print r.zadd("1","1",2,"3",3) #输出的结果是2
    print r.zadd("1","2",2)     #输出的结果是1
    print r.zadd("1","1",1)     #输出的结果是0
    print r.zadd("1","3",4)     #输出的结果是0
    print r.zrange("1",0,-1)    #输出的结果是 ['1', '2', '3']
    

    2.Zcard

    Zcard 命令用于计算集合中元素的数量。
    当 key 存在且是有序集类型时,返回有序集的基数。 当 key 不存在时,返回 0 。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    print r.zadd("1","1",1,"3",3) #输出的结果是2
    print r.zadd("1","2",2)     #输出的结果是1
    print r.zadd("1","2",4)     #输出的结果是1
    print r.zcard(1)            #输出的结果是3
    print r.zcard(2)            #输出的结果是0
    

    3.Zcount

    Zcount 命令用于计算有序集合中指定分数区间的成员数量。分数值在 min 和 max 之间的成员的数量。

    print r.zadd("2","1",1,"3",3) #输出的结果是2
    print r.zadd("2","2",2)     #输出的结果是1
    print r.zadd("2","1",4)     #输出的结果是0
    print r.zcount("2",min=0,max=5)     #输出的结果是3
    print r.zcount("2",min=0,max=3)     #输出的结果是2
    print r.zcount("2",min=1,max=3)     #输出的结果是2
    

    4.Zincrby

    Zincrby 命令对有序集合中指定成员的分数加上增量 increment
    可以通过传递一个负数值 increment ,让分数减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。

    当 key 不存在,或分数不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。

    当 key 不是有序集类型时,返回一个错误。
    分数值可以是整数值或双精度浮点数。
    member 成员的新分数值,以字符串形式表示。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    print r.zadd("4","1",1,"2",2,"3",3,"4",4)   #输出的结果是4
    print r.zincrby(name=4,value=1,amount=5)    #输出的结果是6.0
    print r.zincrby(name=4,value=2,amount=55)    #输出的结果是57.0
    print r.zrange(name=4,start=0,end=-1,withscores=False)       #输出的结果是['1', '3', '2', '4']
    

    5.Zinterstore

    Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。 默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和。

    print r.zadd("41", "a1", 6, "a2", 2,"a3",5)     #输出的结果是3
    print r.zadd('42', a1=7,b1=10, b2=5)            #输出的结果是3
    # 获取两个有序集合的交集并放入dest集合,如果遇到相同值不同分数,则按照aggregate进行操作
    # aggregate的值为: SUM  MIN  MAX
    print r.zinterstore("43",("42","41"),aggregate="MAX")       #输出的结果是4
    print(r.zscan("43"))                                        #输出的结果是(0L, [('a1', 7.0)])
    

    6.Zlexcount

    Zlexcount 命令在计算有序集合中指定字典区间内成员数量。

    print r.zadd("6", "a", 1, "b", 2,"c",3)     #输出的结果是3
    print r.zlexcount(name=6,min="-",max="+")   #输出的结果是3
    print r.zadd("6", "e", 4, "f", 5,"d",6)     #输出的结果是3
    print r.zlexcount(name=6,min="-",max="+")   #输出的结果是6
    print r.zlexcount(name=6,min="[a",max="[b")   #输出的结果是2
    print r.zlexcount(name=6,min="[a",max="[f")   #输出的结果是6
    print r.zlexcount(name=6,min="[a",max="[e")   #输出的结果是4
    

    7.Zrange

    Zrange 返回有序集中,指定区间内的成员。
    其中成员的位置按分数值递增(从小到大)来排序。
    具有相同分数值的成员按字典序(lexicographical order )来排列。
    如果你需要成员按值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
    下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
    你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    print r.zadd("7", "1", 1, "2", 2,"3",3,"4",4,"5",5)     #输出的结果是5
    print r.zrange("7",start=0,end=-1,desc=False)           #输出的结果是['1', '2', '3', '4', '5']
    print r.zrange("7",start=0,end=2,desc=False)            #输出的结果是['1', '2', '3']
    

    8. Zrangebylex

    Zrangebylex 通过字典区间返回有序集合的成员。

    当有序集合的所有成员都具有相同的分值时,有序集合的元素会根据成员的 值 (lexicographical ordering)来进行排序,而这个命令则可以返回给定的有序集合键 key 中, 元素的值介于 min 和 max 之间的成员
    对集合中的每个成员进行逐个字节的对比(byte-by-byte compare), 并按照从低到高的顺序, 返回排序后的集合成员。 如果两个字符串有一部分内容是相同的话, 那么命令会认为较长的字符串比较短的字符串要大

    print r.zadd("8", "a", 1, "b", 2,"c",3)     #输出的结果是3
    print r.zrangebylex(name="8",min="-",max="[c")   #输出的结果是 ['a', 'b', 'c']
    print r.zrangebylex(name="8",min="-",max="(c")   #输出的结果是 ['a', 'b']
    print r.zadd("8", "e", 4, "f", 5,"d",6)     #输出的结果是3
    print r.zrangebylex(name=8,min="[b",max="[f")   #输出的结果是 ['b', 'c', 'e', 'f', 'd']
    print r.zrangebylex(name=8,min="(b",max="[f")   #输出的结果是 ['c', 'e', 'f', 'd']
    

    9.Zrangebyscore

    Zrangebyscore 返回有序集合中指定分数区间的成员列表。

    有序集成员按分数值递增(从小到大)次序排列。 具有相同分数值的成员按字典序来排列(该属性是有序集提供的,不需要额外的计算)。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。

    print r.zadd("9", "a", 1, "b", 2,"c",3)     #输出的结果是3
    print r.zrangebyscore("9","1","6")  #输出的结果是['a', 'b', 'c']
    print r.zadd("9", "c", 11, "d", 21,"e",32)     #输出的结果是3
    print r.zrangebyscore("9","3","16")  #输出的结果是['c']
    print r.zrangebyscore("9","3","36")  #输出的结果是['c', 'd', 'e']
    

    10.Zrank

    Zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。

    如果成员是有序集 key 的成员,返回 member 的排名。 如果成员不是有序集 key 的成员,返回 None 。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    print r.zadd("10", "a", 1, "b", 2, "c", 3)  # 输出的结果是3
    print r.zadd("10", "f", 11, "d", 21,"e",32)    #输出的结果是3
    print r.zrank("10","a")                     #输出的结果是0
    print r.zrank("10","b")                     #输出的结果是1
    print r.zrank("10","e")                     #输出的结果是5
    print r.zrank("10","d")                     #输出的结果是4
    print r.zrank("10","h")                     #输出的结果是None
    

    11. Zrem

    Zrem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。

    当 key 存在但不是有序集类型时,返回一个错误。

    print r.zadd("11", "a", 1, "b", 2, "c", 3)  # 输出的结果是3
    print r.zadd("11", "f", 11, "d", 21,"e",32) #输出的结果是3
    print r.zrem("11","a")                      #输出的结果是1
    print r.zrem("11","f")                      #输出的结果是1
    print r.zrem("11","h")                      #输出的结果是0
    print r.zrange("11",start=0,end=32)         #输出的结果是['b', 'c', 'd', 'e'], 其中  a f 已经移除掉
    print r.zrange("11",start=2,end=32)         #输出的结果是['d', 'e'], 其中  a f 已经移除掉,d  e  没有被包涵
    

    12.Zremrangebylex

    Zremrangebylex 命令用于移除有序集合中给定的字典区间的所有成员。
    被成功移除的成员的数量,不包括被忽略的成员。

    print r.zadd("12", "a", 1, "b", 2, "c", 3)         # 输出的结果是3
    print r.zadd("12", "d", 11, "e", 21,"f",32)        #输出的结果是3
    print r.zremrangebylex("12",min="[a",max="[c")    #输出的结果是3
    print r.zrange("12",0,-1)                         #输出的结果是 ['d', 'e', 'f']  因为  a,b,c已经被移除
    

    13. Zremrangebyrank

    Zremrangebyrank 命令用于移除有序集中,指定排名(rank)区间内的所有成员。

    # print r.zadd("13", "a", 1, "b", 2, "c", 3)         # 输出的结果是3
    # print r.zadd("13", "d", 8, "e", 21,"f",32)        #输出的结果是3
    # print r.zremrangebyrank(name=13,min=1,max=3)       #输出的结果是3
    # print r.zrange("13","0","-1")                      #输出的结果是['a', 'e', 'f']  因为删除了 b,c,d
    

    14.Zremrangebyscore

    Zremrangebyscore 命令用于移除有序集中,指定分数(score)区间内的所有成员。

    print r.zadd("14", "a", 1, "b", 2, "c", 3)          #输出的结果是3
    print r.zadd("14", "d", 8, "e", 21,"f",32)          #输出的结果是3
    print r.zremrangebyscore(name="14",min="1",max="8")       #输出的结果是4,删除的a,b,c,d
    print r.zrange(name="14",start=0,end=-1)            #输出的结果是 ['e', 'f']
    

    15.Zrevrange

    Zrevrange 命令返回有序集中,指定区间内的成员。

    其中成员的位置按分数值递减(从大到小)来排列。
    具有相同分数值的成员按字典序的逆序(reverse lexicographical order)排列。
    除了成员按分数值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    print r.zadd("15", "a", 1, "b", 2, "c", 3)          #输出的结果是3
    print r.zadd("15", "d", 8, "e", 21,"f",32)          #输出的结果是3
    print r.zrevrange(name="15",start=0,end=-1)         #输出的结果是['f', 'e', 'd', 'c', 'b', 'a']
    print r.zrevrange(name="15",start=1,end=21)         #输出的结果是['e', 'd', 'c', 'b', 'a']
    print r.zrevrange(name="15",start=3,end=21)         #输出的结果是['c', 'b', 'a']
    

    16.Zrevrangebyscore

    Zrevrangebyscore 返回有序集中指定分数区间内的所有的成员。有序集成员按分数值递减(从大到小)的次序排列。

    具有相同分数值的成员按字典序的逆序(reverse lexicographical order )排列。
    除了成员按分数值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。

    print r.zadd("16", "a", 1, "b", 2, "c", 3)          #输出的结果是3
    print r.zadd("16", "d", 8, "e", 21,"f",32)          #输出的结果是3
    print r.zrevrangebyscore(name="16",max=33,min=0)    #输出的结果是['f', 'e', 'd', 'c', 'b', 'a']
    print r.zrevrangebyscore(name="16",max=20,min=2)    #输出的结果是['d', 'c', 'b']
    

    17. Zrevrank

    Zrevrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。

    排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。
    使用 ZRANK 命令可以获得成员按分数值递增(从小到大)排列的排名。

    print r.zadd("17", "a", 1, "b", 2, "c", 3)          #输出的结果是3
    print r.zadd("17", "d", 4, "e", 5,"f",6)            #输出的结果是3
    print r.zrevrank(name=17,value="a")                 #输出的结果是5
    print r.zrevrank(name=17,value="c")                 #输出的结果是3
    print r.zrevrank(name=17,value="d")                 #输出的结果是2
    print r.zrevrank(name=17,value="h")                 #输出的结果是None
    

    18.Zscore

    Zscore 命令返回有序集中,成员的分数值。 如果成员元素不是有序集 key 的成员,或 key 不存在,返回 None 。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    print r.zadd("18", "a", 1, "b", 2, "c", 3)   #输出的结果是3
    print r.zadd("18", "d", 4, "e", 5,"f",6)     #输出的结果是3
    print r.zscore(name="18",value="a")          #输出的结果是1.0
    print r.zscore(name="18",value="c")          #输出的结果是3.0
    print r.zscore(name="18",value="f")          #输出的结果是6.0
    print r.zscore(name="18",value="h")          #输出的结果是None
    

    19.Zunionstore

    Zunionstore 命令计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。

    默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和 。
    保存到 destination 的结果集的成员数量。

    20.Zscan

    Zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)返回的每个元素都是一个有序集合元素,一个有序集合元素由一个成员(member)和一个分值(score)组成。

    print r.zadd("20", "a", 1, "b", 2, "c", 3)   #输出的结果是3
    print r.zscan(name="20")                     #输出的结果是(0L, [('a', 1.0), ('b', 2.0), ('c', 3.0)])
    print r.zadd("20", "d", 4, "e", 5,"f",3)     #输出的结果是3
    print r.zscan(name="20")                     #输出的结果是 (0L, [('a', 1.0), ('b', 2.0), ('c', 3.0), ('f', 3.0), ('d', 4.0), ('e', 5.0)])
    
    更多相关内容
  • 主要介绍了python redis连接 有序集合去重的代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • python集合有序

    2020-11-28 12:15:12
    集合是指包含一组元素的数据结构,... 无序集合并且具有 key-value 对:dict 都是可以通过 for--in--进行遍历的举例学习下Python中的有序集合Python内置的有序集合有list和tuple,前者可变后者不可变。List中可以...

    集合是指包含一组元素的数据结构,包括:

    1. 有序集合:list,tuple,str和unicode;

    2. 无序集合:set

    3. 无序集合并且具有 key-value 对:dict 都是可以通过 for--in--进行遍历的

    5d03527148396586.png

    举例学习下Python中的有序集合:

    Python内置的有序集合有list和tuple,前者可变后者不可变。

    List中可以将其元素进行替换如:classmates = ['alice','bob','jack']

    classmates[1] = 'tracy'

    >>>classmates

    ['alice','tracy','jack']

    List中可以存放不同类型的数据:L = ['A',123,True]

    如果要定义一个空的tuple,可以写成()t = ()

    print(t)

    >>>()

    如果定义一个元素的tuple,写成:t = (1)

    print(t)

    >>>1

    定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。

    所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:t = (1,)

    print(t)

    >>>(1,)

    以上就是python集合有序吗的详细内容,更多请关注Gxl网其它相关文章!

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:php中文网

    TAG标签:Python

    展开全文
  • 集合相关命令集合的性质: 唯一性,无序性,确定性无序性,例:{1,2}=={2,1}唯一性,每一个值都是唯一的例:插入“python”,“golang”,“python",“c”,"java"5个值,但实际上,Redis返回的数字4,表示实际上只插入了4...

    集合相关命令

    集合的性质: 唯一性,无序性,确定性

    无序性,例:{1,2}=={2,1}

    唯一性,每一个值都是唯一的

    例:插入“python”,“golang”,“python",“c”,"java"5个值,但实际上,Redis返回的数字4,表示实际上只插入了4个值。这是因为有两个“python”,集合自动过滤了第2个"python” 。

    注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素

    但,因为集合的无序性,无法通过下标或范围来访问部分元素.

    因此想看元素,要么随机先一个,要么全选

    sadd key value1 value2

    作用: 往集合key中增加元素

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    sadd命令在遇到数据己经存在时,会返回“0”,如果数据不存在则把数据插入再返回1。所以,这条命令可以通过返回的数字来判断数据是否存在。

    srem value1 value2

    作用: 删除集合中集为 value1 value2的元素

    返回值: 忽略不存在的元素后,真正删除掉的元素的个数

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    spop key

    作用: 返回并删除集合中key中1个随机元素

    随机--体现了无序性

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    (spop会弹出/删除key中的元素,可以用这个来抽奖,第一名抽出来,第二名,第三名...)

    srandmember key

    作用: 返回集合key中,随机的1个元素.

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    (和spop不同,不会弹出/删除key中的元素)

    sismember key value

    作用: 判断value是否在key集合中

    是返回1,否返回0

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    smembers key

    作用: 返回集中中所有的元素

    注意:

    smembers 命令不会删除数据。但是如果集合里的数据量极大,就应该慎重使用“获取所有数据",因为这样会导致系统的I/o资源瞬间耗尽

    scard key

    作用: 返回集合中元素的个数

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    smove source dest value

    作用:把source中的value删除,并添加到dest集合中

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    sinter key1 key2 key3

    作用: 求出key1 key2 key3 三个集合中的交集,并返回

    redis 127.0.0.1:6379> sadd s1 0 2 4 6

    (integer) 4

    redis 127.0.0.1:6379> sadd s2 1 2 3 4

    (integer) 4

    redis 127.0.0.1:6379> sadd s3 4 8 9 12

    (integer) 4

    redis 127.0.0.1:6379> sinter s1 s2 s3

    1) "4"

    redis 127.0.0.1:6379> sinter s3 s1 s2

    1)"4"

    sinterstore dest key1 key2 key3

    作用: 求出key1 key2 key3 三个集合中的交集,并赋给dest

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    suion key1 key2.. Keyn

    作用: 求出key1 key2 keyn的并集,并返回

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    sdiff key1 key2 key3

    作用: 求出key1与key2 key3的差集

    即key1-key2-key3

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    集合的应用:

    在工程中,Redis的集合一般有两种用途:

    ( I )根据集合内数据不重复的特性实现去重并记录信息。

    (2 )利用多个集合计算交集、并集和差集。

    假设,要做一个学生选课情况实时监控系统,则需要实时知道以下几个数据:

    ( I )当前一共有多少学生至少选了一门课。

    (2 )选了A课没有选B 课的学生有多少。

    (3 )既选了A课又选了B课的学生有多少。

    ( 4 ) A 、B两门课至少选了一门的学生有多少。

    使用集合可以轻易实现这样的功能。每一门课作为一个集合,里面的值就是每一个学生的

    学号,如图5 -65 所示:

    watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

    用python实现:

    import redis

    client = redis.Redis(host="xx.xx.xx.xx’)

    all_class = ['algorithm’,’computer’,’history’,’circuit_design’,’math']

    def all_student():

    students = client.sunion(*all_class)

    return len(students)

    def in_a_and_in_b(class_a,class_b):

    students = client.sinter(class_a,class_b)

    return len(students)

    def in_a_not_in_b(class_a,class_b):

    students = client.sdiff(class a , class b)

    return len(students)

    def in_a_or_in_b(class_a,class_b):

    students= client.sunion(classa,classb)

    return len(students)

    def in_a_or_in_b(class_a,class_b):

    students = client.sunion(class_a,class_b)

    return len(students)

    //选了至少一门课:

    all_student()

    //选了math没选computer的:

    in_a_not_in_b("math","computer")

    //选了math也选了computer的学生:

    in_a_and_in_b("math","computer")

    //选了math或选了computer的学生:

    in_a_or_in_b("math","computer")

    展开全文
  • python set有序

    千次阅读 2021-01-13 19:20:25
    Python的set是一个无序且无重复元素的集合,概念上相当于数学上的无序集,数据结构上相当于dict的键。既然set是集合,则必然可以实现并、交、差、对称差等集合运算。set是一组无序排列的可哈希的值,因此可以用作...

    Python的set是一个无序且无重复元素的集合,概念上相当于数学上的无序集,数据结构上相当于dict的键。

    既然set是集合,则必然可以实现并、交、差、对称差等集合运算。

    set是一组无序排列的可哈希的值,因此可以用作字典中的键。set和之前介绍的list、tuple、dict等一样,可以使用in操作符检查元素是否在集合中存在,使用len()求得集合元素的个数,使用for循环迭代其成员,使用copy()返回一个浅复制。不同之处在于集合本身无序,所以没有索引,就不能实现索引和切片操作。

    相关推荐:《Python相关教程》

    set具有以下特性:

    ·元素不重复出现

    ·元素必须是不可变对象

    你可以把set当作是dict中的键来理解,当然仅仅限于数据结构层面。

    在Python中set的底层结构和字典是完全一样的都是哈希表,就当成是只有键没有值的字典就可以了。

    Python 早期版本就没有set这个类型,那时候开发者都是直接建一个 {key1:None, key2:None}的字典来实现set的功能。

    字典和set都是用空间来换时间,空间浪费很大。

    set的最大用途是解决了判断某个元素在集合中出现的查找效率问题。>>> timeit.timeit(stmt='10**4 in s',setup='s=range(10**5)', number=10**5)

    13.447274759909192

    >>> timeit.timeit(stmt='10**4 in s',setup='s=set(xrange(10**5))', number=10**5)

    0.006686778187940945

    >>>

    list的实现方式是链表,空间利用率高追加元素快而方便。

    展开全文
  • Redis 有序集合(sorted set)Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。...
  • python中的列表是一种有序数据的集合。其中的元素按照一定的顺序编号存放在存储空间当中,编号从0开始,最后一个编号为n-1,n表示列表中存储数据的数量。值得一提的是,列表是用方括号(square bracket)括起来,...
  • 来自python的【set集合总结/frozenset】

    千次阅读 2021-01-14 15:38:53
    set定义集合(set) 是一个无序的不重复的元素序列,能够去重复,删除重复项使用{},或者set()函数穿件,与dict的符号一样。空集合必须使用set(),因为{}是用来创建空字典dictset中的数据一定要是不可变数据,否则报错...
  • python内置有序集合

    千次阅读 2018-01-25 09:29:04
    Python内置的有序集合有list和tuple,前者可变后者不可变。 List中可以将其元素进行替换如:classmates = ['alice','bob','jack'] classmates[1] = 'tracy' >>>classmates ['alice','tracy','jack']List中可以存放...
  • list是有序、内部数据可变化的集合 1.创建 eg:List = [1,2,3,] 2.增 eg: List.append(4),注append仅接受一个参数,即需要增加的值,并将之放在数组末尾,换句话说,append方法不能在末尾以外其他地方增加数值 ...
  • 有序集合sortedset一特点1、有序、去重2、元素是字符串类型3、每个元素都关联着一个浮点数分值(score),并按照分支从小到大的顺序排列集合中的元素(分值可以相同)4、最多包含2^32-1元素示例1:一个保存了水果价格的...
  • Python有序集吗?

    2020-12-15 11:01:10
    有序集在功能上是有序字典的...截至Python3.1的确有collections.OrderedDict..下面是OrderedSet的示例实现。(请注意,只需要定义或重写几个方法:collections.OrderedDict和collections.MutableSet(做重物。)impor...
  • Python操作Redis之有序集合

    千次阅读 2015-11-12 09:04:23
    有序集合,顾名思义,这里存储的数据是有序的,这样,用处可就大了,例如你玩游戏时的各项指标排名,如果是传统的关系型数据库,面对百万级别的数据,是很难处理好的,但使用Reids,则可以简单高效的完成这些工作。...
  • Python是否有序集?

    千次阅读 2020-12-15 11:01:08
    因此,如果人们不理会有序字典中的值(例如,通过分配它们None),那么实质上就是一个有序集合。对于Python 3.1的存在collections.OrderedDict。以下是OrderedSet的示例实现。(请注意,只有很少的方法需要定义或重写:...
  • python中的四种集合数据类型是: 列表(List):有序,可更改,可以有重复的成员 元组(tuple):有序,不可更改,可以有重复的成员 集合(set):无序,无索引,没有重复的成员。 字典 (Dictionary):无序,可...
  • python redis有序集合

    2019-09-03 17:26:20
    关于有序集合 这里和菜鸟教程里的不一样 也是redis 有序集合的大坑所在,很荣幸我也踩了 就是 value和score 是反过来的的 在菜鸟教程中是 zadd (key 分数,值(字符串)) r.zadd(key, value, score) #插入 r.zrange...
  • python 零基础学习篇
  • Python集合无序字典有序(3.7+)
  • 本篇文章给大家带来的内容是关于python有序列表以及方法的介绍(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。有序列表以及有序列表的函数和方法(list)list = ['hello', 'wrold']# len ...
  • 操作有序集合zset ‘’’ ‘’’ 操作有序集合zset ‘’’ r=redis.Redis(password=‘123456’) r.zadd(‘zk1’,{‘yoyo’:100,‘yoyo2’:200}) r.zadd(‘zk2’,{‘yoyo2’:200,‘yoyo3’:300}) print(r.zrange(‘zk...
  • python set集合的用法

    千次阅读 2021-02-03 00:27:09
    python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.sets 支持 ...
  • 我想知道是否有一种简单的方法在Python中构建可索引弱有序集。我试图自己创建一个。以下是我想到的:"""An indexable, ordered set of objects, which are held by weak reference."""from nose.tools import *...
  • Python顺序集合之 List

    2020-12-06 08:36:19
    标签:Python内置的一种数据类型是列表:list... [‘Jenkins‘, ‘Jenny‘, ‘Tracy‘][‘Jenkins‘, ‘Jenny‘, ‘Tracy‘]list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的。1、添加新元素:...
  • python redis详解(七)ZSET有序集合

    千次阅读 2019-07-13 20:13:43
    redis有序集合: Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。 zset的成员是唯一...
  • 1、Redis控制台操作无序集合set 无序集合 元素为string类型 元素具有唯一性,不重复 redis操作: 设置 添加元素 SADD key member [member ...] 获取 返回key集合所有的元素 SMEMBERS key 返回集合元素个数 SCARD key...
  • python集合类型

    千次阅读 2020-12-04 03:31:56
    集合类型简介集合也是容器,其内元素都是无序、唯一、不可变的。它常用来做成员测试、移除重复数据、数据计算(比如交集、并集、差集)。集合Set是dict的无value版。集合也使用大括号包围:>>> s = {'a','b',...
  • 集合排序python

    千次阅读 2020-11-21 04:11:04
    快速排序python实现快速排序快速排序的实现同样使用分治法,它的原理是从序列中选择一个值作为基准值,然后分成比基准值小的序列集合和比基准值小的序列集合和与基准值相等的序列集合。 再将比基准值小的序列集合和...
  • redis有序集合(Sorted Set)命令ZADDZREMZCARDZCOUNTZSCOREZINCRBYZRANGEZREVRANGEZRANGEBYSCOREZREVRANGEBYSCOREZRANKZREVRANKZREMRANGEBYRANKZREMRANGEBYSCOREZINTERSTOREZUNIONSTORE从上面命令中看到, redis的...
  • # 列表:有序,元素可重复,有索引,用于数据的使用,[] # 集合:无序,元素不重复,无索引,用于数据的交并差集的获取,{} # 集合创建: set1 = set() set2 = {1,2,3} # set3 = {}, 这种错误,这是空字典创建方式 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,567
精华内容 23,826
关键字:

python有序集合