python字典的合并排序添加查询

作者: Tim在路上 | 来源:发表于2018-10-08 09:17 被阅读2次

    python 中映射类型里key和value是一种一对多的关系,通常被认为是一种可变的哈希表。字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,也可存储其他容器类型。

    字典的合并

    如何实现字典间的合并呢?

    y.update(x)
    x = {'a':1,'b':7,'c':9}
    y = {'a':8,'c':11}
    
    y.update(x)
    
    print(x)
    {'a': 1, 'b': 7, 'c': 9}
    
    x.update(y)
    
    print(x)
    {'a': 8, 'b': 7, 'c': 11}
    

    update的这个方法可以看出它会把后面的字典用来覆盖住前面的字典,然后进行合并
    同时不会赋值给第三方的字典。

    怎么样才能最终让值保存在第三方呢?

    z = dict(x.items() + y.items())
    x = {'a':1, 'b': 2}
    y = {'b':10, 'c': 11}
    
    z = dict(list(y.items()) +list(x.items()))
    
    print(z)
    
    {'b': 2, 'c': 11, 'a': 1}
    z = dict(list(x.items()) +list(y.items()))
    
    print(z)
    
    {'a': 1, 'b': 10, 'c': 11}
    

    注意这里在python3中必须使用z = dict(list(y.items()) +list(x.items()))来进行字典的合并,同时可以看出自典的顺序不同合并的结果也不相同。

    dict(d1, **d2)
    x = {'a':1, 'b': 2}
    y = {'b':10, 'c': 11}
    z = dict(x,**y)
    print(z)
    {'a': 1, 'b': 10, 'c': 11}
    

    这个和上一种方法很雷同

    字典的排序

    首先,对字典进行排序是不可能的,只有把字典转换成另一种方式才能排序。
    可以转化为元组列表进行排序

    按value进行排序
    import operator
    x = {1: 2, 3: 4, 4:3, 2:1, 0:0}
    sorted_x = sorted(x.items(), key=operator.itemgetter(1))
    print(sorted_x)
    
    按key进行排序
    import operator
    x = {1: 2, 3: 4, 4:3, 2:1, 0:0}
    sorted_x = sorted(x.items(), key=operator.itemgetter(0))
    print(sorted_x)
    
    逆序
    sorted(d.items(),key = lambda x:x[1],reverse = True)
    

    向字典添加元素

    d = {'key':'value'}
    
    d['mynewkey'] = 'mynewvalue'
    print d
    {'mynewkey': 'mynewvalue', 'key': 'value'}
    

    当然也可以使用update

    >>> x = {1:2}
    >>> print x
    {1: 2}
    
    >>> x.update({3:4})
    >>> print x
    {1: 2, 3: 4}
    

    检查一个键在字典中是否存在

    if 'key1' in dict.keys():
      print "blah"
    else:
      print "boo"
    
    d = dict()
    
    for i in xrange(100):
        key = i % 10
        d[key] = d.get(key, 0) + 1
    

    如果get没有默认可以填写为0

    相关文章

      网友评论

        本文标题:python字典的合并排序添加查询

        本文链接:https://www.haomeiwen.com/subject/fdflaftx.html