Python自学3(字典)

Python自学3(字典)

1.像列表一样,“字典”是许多值的集合,但是不像列表的下标,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对
2.字典中的表项是不排序的,不能像列表一样进行切片。
3.尝试访问字典中不存在的键,将导致KeyError出错信息
4.尽管字典时不排序的,但可以用任意值作为键,用强大的方式来组织数据。
5.用in关键字,可以看看输入的名字是否作为键存在于字典中,就像查看列表中。如果该名字在字典中,你就可以用方括号访问关联的值。如果不在,你就可以用同样的方括号语法和赋值操作符添加它
6.有三个字典方法,它们将返回类似列表的值
key():返回字典的键,返回类型dict_keys

spam={'color':'red','age':'20'}
for i in spam.keys():
    print(i)
color
age

values():返回字典的值,返回类型dict_values

spam={'color':'red','age':'20'}
for i in spam.values():
    print(i)
red
20

items():返回字典的键-值对,返回类型dict_items

spam={'color':'red','age':'20'}
for i in spam.items():
    print(i)
('color', 'red')
('age', '20')

7.如果希望通过这些方法得到一个真正的列表,就把类似列表的返回值传递给list函数

spam={'color':'red','age':'20'}
print(list(spam.keys()))
['color', 'age']

8.in和not in操作符可以检查某个键或者值是否在字典中。例如'color' in spam.keys()
9.get()方法:它有两个参数,要去的其值的键,以及如果该键不存在时,返回的备用值。

>>> pic = {'apple':4, 'banana':6}
>>> 'buy '+str(pic.get('apple',0))+' apples'
'buy 4 apples'
>>> 'buy '+str(pic.get('eggs',2))+' eggs'
'buy 2 eggs

10.setdefault()方法:传递给该方法的第一个参数,是要检查的键;第二个参数,是如果该键不存在时要设置的值。如果该键确实存在,方法就会返回键的值。
setdefault()是一个很好的快捷方式,可以确保一个键存在。
例子:统计字符串中每个字符出现的次数

message = 'sifu aidfu kafi oahfoihalifh.asd,asf'
count = {}
for i in message:
    count.setdefault(i,0)
    count[i]=count[i]+1
print(count)

结果:

{'s': 3, 'i': 5, 'f': 6, 'u': 2, ' ': 3, 'a': 6, 'd': 2, 'k': 1, 'o': 2, 'h': 3, 'l': 1, '.': 1, ',': 1}

11.漂亮打印
pprint模块中包含pprint()和pformat()函数。如果想要字典中表项的显示比print()的输出结果干净漂亮,就有用了。

import pprint
message = 'sifu aidfu kafi oahfoihalifh.asd,asf'
count = {}
for i in message:
    count.setdefault(i,0)
    count[i]=count[i]+1
pprint.pprint(count)

结果:

{' ': 3,
 ',': 1,
 '.': 1,
 'a': 6,
 'd': 2,
 'f': 6,
 'h': 3,
 'i': 5,
 'k': 1,
 'l': 1,
 'o': 2,
 's': 3,
 'u': 2}

1)如果字典本身包含嵌套的列表或者字典,pprint.pprint()函数就特别有用
2)如果希望得到漂亮打印的文本作为字符串,而不是显示在屏幕上,那就调用pprint.pformat()

import pprint
message = 'sifu aidfu kafi oahfoihalifh.asd,asf'
count = {}
for i in message:
    count.setdefault(i, 0)
    count[i] = count[i] + 1
tmp = pprint.pformat(count)
print(tmp)

结果:

{' ': 3,
 ',': 1,
 '.': 1,
 'a': 6,
 'd': 2,
 'f': 6,
 'h': 3,
 'i': 5,
 'k': 1,
 'l': 1,
 'o': 2,
 's': 3,
 'u': 2}

12.get() 函数返回指定键的值,如果值不在字典中返回默认值。spam.get(item,0)
13.统计物品清单,其中键是字符串,描述清单中的物品,值是一个整型值。

def disaplayInventory(spam):
    stat = {}
    for k, v in spam.items():
        for m, n in v.items():
            if m not in stat.keys():
                stat[m]=n
            else:
                stat[m]=stat[m]+n
    for i,j in stat.items():
        print(str(j)+' '+str(i))

total = {'Alias': {'rope': 2, 'torch': 1}, 'Betty': {'gold': 3, 'arrow': 8},
         'Cindy': {'torch': 3, 'dagger': 1, 'arrow': 5}}
disaplayInventory(total)

结果:

2 rope
4 torch
3 gold
13 arrow
1 dagger
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值