c语言python字典结构_python 内置数据结构字典

字典dict是python中最最重要的内置数据结构,它是无序,可变的数据结构,k-v结构key是不可重复的

字典定义初始化

In [1]: d1={}

In [2]: d2=dict()

In [3]: d3={'a':1}

In [4]: d4=dict({'a':1})

In [5]: d3

Out[5]: {'a': 1}

In [6]: d4

Out[6]: {'a': 1}

#可以用可迭代的数据类型做定义

In [11]: d5=dict((('a',1),('b',2)))

In [12]: d5

Out[12]: {'a': 1, 'b': 2}

#字典的value可以定义任意数据类型

In [21]: d6={'a':2,'b':{1,2},'c':[1,2,3],'d':('tom','man'),'f':True}

In [22]: d6

Out[22]: {'a': 2, 'b': {1, 2}, 'c': [1, 2, 3], 'd': ('tom', 'man'), 'f': True}

字典数据访问

#d[key],存在则返回value,不存在则抛出keyError错误

In [21]: d6={'a':2,'b':{1,2},'c':[1,2,3],'d':('tom','man'),'f':True}

In [23]: d6['a']

Out[23]: 2

#get方法不会抛出错误,可以赋缺省值

In [24]: d6.get('f')

Out[24]: True

In [25]: d6.get('d')

Out[25]: ('tom', 'man')

In [26]: d6.get('g')

In [27]: d6.get('g',123)

Out[27]: 123

#setdefault,如果key存在则返回值,如果不存在key,则添加key,value为None,k-v都设置则添加该k-v对

In [29]: d6.setdefault('a')

Out[29]: 2

In [30]: d6.setdefault('a',3)

Out[30]: 2

In [31]: d6.setdefault('x',3)

Out[31]: 3

In [32]: d6

Out[32]: {'a': 2, 'b': {1, 2}, 'c': [1, 2, 3], 'd': ('tom', 'man'), 'f': True, 'x': 3}

字典修改

#d[key]=value,修改字典元素

In [35]: d6['a']

Out[35]: 2

In [36]: d6['a']=45

In [37]: d6['a']

Out[37]: 45

#增加元素update,元组后面必须有逗号,不然会抛出错误(可迭代对象)。直接跟一个字典

In [42]: d6.update((('z',1),))

In [48]: d6.update(({'z':1}))

#字典删除

#pop(key,[value]),当key存在时则删除该键值对并返回value,key不存在pop(key,value)返回该value,没有设置该默认value则抛出keyError异常

#键存在

In [49]: d6.pop('z')

Out[49]: 1

#key不存在

In [56]: d6.pop('xy')

---------------------------------------------------------------------------

KeyError Traceback (most recent call last)

in ()

----> 1 d6.pop('xy')

KeyError: 'xy'

In [57]: d6.pop('xy',45)

Out[57]: 45

#popitem,返回任意键值对

In [58]: d6.popitem()

Out[58]: ('x', 3)

In [59]: d6.popitem()

Out[59]: ('f', True)

#clear 清空整个字典

In [61]: d6.clear()

#del删除字典,可以删除整个字典,也可以删除字典的键值对

#删除字典

In [64]: d1

Out[64]: {'b': {1, 2}, 'c': [1, 2, 3], 'd': ('tom', 'man')}

In [65]: del d1

In [66]: d1

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

in ()

----> 1 d1

NameError: name 'd1' is not defined

#删除字典键值对

In [68]: del d1['b']

字典遍历:d.keys,d.values,d.items方法和直接遍历字典

#遍历字典的key

#第一种直接遍历字典,默认返回key

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

for k in d:

print(k)

#第二种keys方法,会返回一个类似列表的数据结果

In [75]: d.keys()

Out[75]: dict_keys(['a', 'b', 'c', 'd'])

In [76]: type(d.keys())

Out[76]: dict_keys

for k in d.keys():

print(k)

#第二种items方法,items方法会一个列表元组包涵k-v对

In [78]: d.items()

Out[78]: dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

In [77]: type(d.items())

Out[77]: dict_items

for k,v in d.items():

print(k)

#遍历value

for k in d:

print(d[k])

for v in d.values():

print(v)

for k,v in d.items():

print(v)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值