【Python】字典的用法

字典的基本用法

整个字典用大括号包围
每个键用引号包围
各个值用引号包围
键和相应的值之间用冒号隔开
键值对之间用逗号隔开

person = 
{ 	‘Name’: ‘Wasabi’,
	‘Gender’: ‘Male’,
	'Occupation': 'Student',
	'Age': eighteen
}

字典不会维持插入的顺序

列表会维持对象插入时的顺序,但字典不会这么做。也就是说,字典中的数据是无序的

使用键访问字典中的数据

>>> person ['Name']
'Wasabi'
>>> person ['Occupation']
'Student'

在运行时处理字典

>>> person ['Country'] = "China"
>>> person
{	'Name': 'Wasabi', 'Gender': 'Male', 'Occupation': 'Student', 
 	'Age': 'Eighteen', 'Country': 'China' }

迭代处理键和值

我们看看迭代处理字典会出现什么:

>>> for kv in person:
...     print(kv)
...
Name
Gender
Occupaiton
Age
Country

什么鬼?为什么只输出了键,值去哪里了?
原来,用for循环迭代处理一个字典时,解释器只处理字典的键。
要访问关联的数据值,需要将键放在中括号里,结合使用字典名和键来访问与这个键关联的值。

>>> for k in person:
...     print(k,':',person[k])
...
Name : Wasabi
Gender : Male
Occupaiton : Student
Age : Eighteen
Country : China

指定输出时的字典顺序

vowels

>>> found = {}
>>> found
{}
>>> found['a'] = 0
>>> found['e'] = 0
>>> found['i'] = 0
>>> found['o'] = 0
>>> found['u'] = 0
>>> found
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}
>>> found['e'] += 2
>>> found
{'a': 0, 'e': 2, 'i': 0, 'o': 0, 'u': 0}

第一种方法

Python提供了sorted内置函数,利用这个函数可以轻而易举地将键按顺序输出。

for k in sorted(found):
    print(k, 'was found', found[k], 'time(s).')

输出如下:

a was found 0 time(s).
e was found 2 time(s).
i was found 0 time(s).
o was found 0 time(s).
u was found 0 time(s).

第二种方法

字典提供了大量内置方法,其中之一就是items方法。它会返回一个键/值对列表。在这里有两个循环变量,用sorted函数控制输出。

for k,v in sorted (found.items()):
    print(k, 'was found', v, 'time(s).')

我们会看到输出同上。

sorted内置方法不会改变你提供的数据的顺序,只是返回这个数据的一个有序的副本。对于found字典,它按照字母顺序从A到Z排序。字典原来的顺序依旧保持不变。每次需要以某种特定的顺序迭代处理键值对时,都需要调用sorted方法。

使用setdefault省略初始化

vowels = {'a', 'e', 'i', 'o', 'u'}
word = input("Provide a word to search for vowels")

found = {}

found['a'] = 0
found['e'] = 0
found['i'] = 0
found['o'] = 0
found['u'] = 0

for letter in word:
    if letter in vowels:
        found[letter] += 1

for k,v in sorted(found.items()):
    print(k, 'was found', v, 'time(s).')

我们发现,如果一个元音没有出现,程序会输出0次;但是若不进行初始化,直接found[letter] += 1会报错。那么,怎样动态进行初始化呢?

for letter in word:
    if letter in vowels:
        found.setdefault(letter, 0)
        found[letter] += 1

用一个setdefault函数就可以啦
setdefault函数可以保证将一个不存在的键初始化为一个默认的指定值如果键已存在,那么关联值保持不变

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值