专栏首页dogfeipython基础—dict

python基础—dict

字典是key-value键值对的数据的集合
    可变的,无序的,key不重复
  
</li>

<li>
  
    字典的key要求和set集合的要求一致,可哈希才可以作为key
  
</li>
```

dict()方法

d = dict(((1,‘a’),(2,‘b’))) d {1: ‘a’, 2: ‘b’}

d2 = dict(([1,‘a’],[2,‘b’])) d2 {1: ‘a’, 2: ‘b’}

#直接使用{}去构造 d3 = {‘a’: 1,‘b’: 2,‘c’: 3} d3 {‘a’: 1, ‘b’: 2, ‘c’: 3}

#类方法 dict.fromkeys(iterable,value) d4 = dict.fromkeys(range(5)) d4 {0: None, 1: None, 2: None, 3: None, 4: None}

d5 = dict.fromkeys([‘a’,‘b’,1,2,3]) d5 {‘a’: None, ‘b’: None, 1: None, 2: None, 3: None}

d6 = dict.fromkeys(range(5),‘python’) d6 {0: ‘python’, 1: ‘python’, 2: ‘python’, 3: ‘python’, 4: ‘python’}

<h2>
    字典元素的访问
  </h2>
  
  
  
  
  
    d[key]
  
  
  <ul>
    <li>
      
        返回key对应的值value
      
    </li>
    
    <li>
      
        key不存在抛出KeyError异常
      
    </li>
  </ul>
  
  
    ```
d = {1: 'a', 2: 'b'}
d[1]
'a'
get(key,default)
  • 返回key对应的值value
  • key不存在返回缺省值,如果没有
d = {1: 'a', 2: 'b'}
d.get(1)
'a'

d[key] = value

  • 将key对应的值修改为value
  • key不存在添加新的kv对
d
{1: 'a', 2: 'b'}
d[3] = 'c'

d
{1: 'a', 2: 'b', 3: 'c'}
d[2] = 'python'
d
{1: 'a', 2: 'python', 3: 'c'}

update([other])

  • 使用另一个字典的kv对更新本字典
  • key不存在,就添加
  • key存在,覆盖已存在的key对应的值
  • 就地修改
d.update(red=1)
d
{1: 'a', 2: 'python', 3: 'c', 'red': 1}

d.update({'red': 2})
d
{1: 'a', 2: 'python', 3: 'c', 'red': 2}

d.update((('red',3),))
d
{1: 'a', 2: 'python', 3: 'c', 'red': 3}

d6
{0: 'python', 1: 'python', 2: 'python', 3: 'python', 4: 'python'}

d.update(d6)
d
{1: 'python', 2: 'python', 3: 'python', 'red': 3, 0: 'python', 4: 'python'}

字典删除

pop(key,default)

  • key存在,移除它,并返回它的value
  • key不存在,返回给定的default
  • 如果default没有设置,那么当key不存在时,使用pop会抛出异常
d.pop(5)
'a'

d.pop(6,'not exist')
'not exist'

popitem()

  • 移除并返回一个任意的键值对
  • 字典为empty,抛出KeyError异常
d.popitem()
(0, 'python')

d.popitem()
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
&lt;ipython-input-76-83c64cff336b> in &lt;module>()
----> 1 d.popitem()

KeyError: 'popitem(): dictionary is empty'

clear()

  • 清空字典
del语句

d = {'a': 1,'b': b,'c': [1,3,5]}

del d['a']

d
{'b': [], 'c': [1, 3, 5]}

字典遍历

1)遍历key

for k in d:
    print(k)

或

for k in d.keys():
     print(k)

2)遍历value

for k in d:
    print(d[k])

或

for k in d.keys():
     print(d.get(k))

或

for v in d.values():
    print(v)

或

for _,v in d.items():
     print(v)

defaultdict工厂函数

collections.defaultdict([default_factory,….])

  • 第一个参数是default_factory,缺省是None,它提供一个初始化函数,当key不存在的时候,会调用这个工厂函数来生成key对应的value

OrderedDict使用

collections.OrderedDict([items])

  • key并不是按照加入的顺序排列,可以使用OrderedDict记录顺序
  • 有序字典可以记录元素插入的顺序,打印的时候也是按照这个顺序输出打印
  • 3.6版本的字典就是记录Key插入的顺序

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用ansible批量部署filebeat

    filebeat是beats组件中的一个,相较于logstash,是一个轻量级的日志采集器,

    dogfei
  • nginx反向代理’/’的问题记录

    一个vue项目的前端,在登录时去请求另一个接口进行登录,请求时返回404,原因就是在请求www.a.com/forward/login/v1/doLogin?l...

    dogfei
  • dockerfile构建镜像报错IPv4 forwarding is disabled

    dogfei
  • 手把手教你实现一个基于 Java 的分布式锁服务

    编辑:业余草 来源:https://www.xttblog.com/?p=4994

    业余草
  • 小王,在 Java 中如何利用 redis 实现一个分布式锁服务呢???

    在现代的编程语言中,接触过多线程编程的程序员多多少少对锁有一定的了解。简单的说,多线程中的锁就是在多线程环境下,多个线程对共享资源进行修改的时候,保证共享资源一...

    趣学程序-shaofeer
  • antd的select 的key 和value获取

    *默认情况下 onChange 里只能拿到 value,如果需要拿到选中的节点文本 label,可以使用 labelInValue 属性。 选中项的 labe...

    用户4344670
  • MxNet预训练模型到Pytorch模型的转换

    预训练模型在不同深度学习框架中的转换是一种常见的任务。今天刚好DPN预训练模型转换问题,顺手将这个过程记录一下。

    sparkexpert
  • Python这10个字典操作你必须知道

    不要使用 key in d.keys(), 这是一种画蛇添足的操作,因为d.keys()会返回一个新的列表对象,导致内存最大。

    华章科技
  • 运用基于内存的数据库redis构建分布式爬虫–抓妹子图网

    当你能够针对一个url进行请求,获取数据,继续请求的时候,说明你的爬虫已经可以自给自足的爬起来。但是这样的爬虫其效率将会严重限制在单进程效率极限之下,时间的主要...

    十四君
  • 「小程序JAVA实战」开发用户redis-session(40)

    IT故事会

扫码关注云+社区

领取腾讯云代金券