python——字典内置函数

字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

   d = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,可哈希的,如字符串,数字或元组。

字典内置方法

1. clear(...)

D.clear() -> None.  Remove all items from D.
清空字典;
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    dict.clear()
    print(dict)       #返回空字典

2. copy(...)

D.copy() -> a shallow copy of D
复制字典;浅复制;

3. fromkeys(iterable, value=None, /) from builtins.type

创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

4. get(...)

D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.
类似三元运算;dict.get(key,d)  去字典dict中key的值;如果没有这个key,则返回d;如果不指定d,默认返回None
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    print(dict.get('wjsz','is not'))          # 由于字典dict中没有wjsz,返回指定的字符串 is not

5. items(...)

D.items() -> a set-like object providing a view on D's items
将字典中的键值对转换为元组形式;
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    print(dict.items())             # 返回   dict_items([('wjz', 1), ('wjk', 2), ('wz', 3)])

6. keys(...)

D.keys() -> a set-like object providing a view on D's keys
取字典的keys,列表的形式返回;
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    print(dict.keys())              # 返回 dict_keys(['wjz', 'wjk', 'wz'])

7. pop(...)

D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised
删除指定的key,并且返回指定key的value;如果字典中没有指定的key,并且指定了d,则返回d;否则找不到key,又没有指定d,返回异常;
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    print(dict.pop('wjz'))             # 返回 wjz的值 1
    print(dict)                        # 打印dict,输出  {'wjk': 2, 'wz': 3}
    print(dict.pop(11,'is not'))       # 字典中没有找到11,返回 is not

8. popitem(...)

D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
随机返回并删除字典中的一对键和值(一般删除末尾对)。如果字典已经为空,却调用了此方法,就报出KeyError异常。
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    print(dict.popitem(),dict)      # 返回 ('wz', 3) {'wjz': 1, 'wjk': 2}

9. setdefault(...)

D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
在字典中查找指定key;如果有这个key,则返回key的value;如果没有这个key,则返回这个d,同时字典增加键值对 key:d ;d默认为None,如果没有指定d,会得到键值对 key:None
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    print(dict.setdefault('wzs'))       # 没有指定d,返回 None
    print(dict)                         # 输出 {'wjz': 1, 'wjk': 2, 'wz': 3, 'wzs': None}

10. update(...)

D.update([E, ]**F) -> None.  Update D from dict/iterable E and F.
If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k]              # 如果这个参数是个字典;
If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v            # 不是字典,要有k,v形式元组列表。如果不是,报异常;
In either case, this is followed by: for k in F:  D[k] = F[k]
向字典中追加键值对;可以指定字典、列表、元组;如果指定列表和元组,要k,v形式。
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    dict2={'a':1,'b':2,'c':3}
    print(dict.update(dict2),dict)       # 输出 None {'wjz': 1, 'wjk': 2, 'wz': 3, 'a': 1, 'b': 2, 'c': 3}

    dict={'wjz':1,'wjk':2,'wz':3}
    tuple=(('a',1),('b',2),('c',3))
    print(dict.update(tuple),dict)      # 输出 None {'wjz': 1, 'wjk': 2, 'wz': 3, 'a': 1, 'b': 2, 'c': 3}

    dict={'wjz':1,'wjk':2,'wz':3}
    list=[('a',1),('b',2),('c',3)]
    print(dict.update(list),dict)       # 输出 None {'wjz': 1, 'wjk': 2, 'wz': 3, 'a': 1, 'b': 2, 'c': 3}

11. values(...)

D.values() -> an object providing a view on D's values
返回字典的value列表;
例如:
    dict={'wjz':1,'wjk':2,'wz':3}
    print(dict.values())             # 输出 dict_values([1, 2, 3])


python 根据字典的键值进行排序

1、利用key排序

d = {'d1':2, 'd2':4, 'd4':1,'d3':3,}
for k in sorted(d):
    print(k,d[k])

d1 2
d2 4
d3 3
d4 1

 

2、利用value排序:__getitem__

d = {'d1':2, 'd2':4, 'd4':1,'d3':3,}
for k in sorted(d,key=d.__getitem__):
    print(k,d[k])

d4 1
d1 2
d3 3
d2 4

 

反序:reverse=True

d = {'d1':2, 'd2':4, 'd4':1,'d3':3,}
for k in sorted(d,key=d.__getitem__,reverse=True):
    print(k,d[k])

d2 4
d3 3
d1 2
d4 1

 

3、对dict_items进行排序

d = {'d1':2, 'd2':4, 'd4':1,'d3':3,}
res = sorted(d.items(),key=lambda d:d[1],reverse=True)
print(res)

 [('d2', 4), ('d3', 3), ('d1', 2), ('d4', 1)]

 
posted @ 2018-12-07 11:27  hacker&haidao  阅读(513)  评论(0编辑  收藏  举报