python的学习之路(1)--字典

python学习记录

序言:笔者并未从python最基础开始记录学习历程,是因为在此之前就已经学习了一点点皮毛,所以在第一次在网上记录自己的学习过程便从后面的新知识开始。

字典

一个Python字典可能只包含几个键—值对,也可能包含数百万个键—值对。鉴于字典可能包含 大量的数据,Python支持对字典遍历。字典可用于以各种方式存储信息,因此有多种遍历字典的 方式:可遍历字典的所有键—值对、键或值。

遍历键-值对

the_famous_river={ 'the Yangtze River':'HuBei', 
                  'the Huang River':'ShanXi', 
                  'Nile':'Aswan'}  #这个字典记录下了河流流经城市的信息
for river,city in the_famous_river.items():
    print( "\n river:" + river )  
    print( "\n city" + city )

利用一个for循环遍历一遍字典中的键-值对,方法items()是返回一个键- 值对列表。
但是运行出的键-值对顺序可能不会像列表中展示的那样,即便遍历字典时,键—值对的返回顺序也与存储顺序不同。Python不关心键—值对的存 储顺序,而只跟踪键和值之间的关联关系。所以如果输出顺序不同,不要惊慌。

遍历所有的键

依然利用上面的具有包含河流流经城市信息的字典,如果我们想要只取出字典的键那么用方法keys()就可以做到。

for river in the_famous_river.keys():
    print( river )

当然,用方法keys()只是为了更方便知道代码的意思,如果你愿意,也可以直接用the_famous_river,因为遍历字典时,是默认遍历所有的键,因此也可以这样:

for river in the_famous_river:
    print( river )

这两种方式得到的结果一样样的。

嵌套

在学习python的时候应该可以感觉到列表和字典应该可以有某种联系,因为在输出字典的时候,我们通常把键作为一整个列表输出,又或是将值作为一整个列表输出,更可将键-值对作为一整个列表。

利用嵌套可以将列表嵌套在字典中,也可将字典嵌套在列表中,根据需要选择合适的嵌套将很有帮助。

字典列表

首先展示将字典嵌套在列表中,我们假设利用创造外星人的例子来写一段代码:

# 创建一个用于存储外星人的空列表 
aliens = [] 
 
# 创建30个绿色的外星人 
for alien_number in range(30):
    new_alien = {'color': 'green', 'points': 5,   'speed': 'slow'}
    aliens.append(new_alien)
# 显示前五个外星人
for alien in aliens[:5]:
    print(alien) 
    print("...(剩下的25个)") 
 
# 显示创建了多少个外星人
print("Total number of aliens: " + str(len(aliens)))

其中,range()的功能不是重在创建数字列表,而是为了告诉for循环重复几次,创建多少个外星人、
每一轮for循环都会创建一个将外星人的属性包含在new_alien的字典,然后将这个字典添加到开头创建的列表aliens中。
第二个for循环是为了验证我们是否创建了30个外星人并且将他们的信息全部储存在列表之中。其中右端 aliens[:5] 是只切片前五个外星人,也可以写成aliens[0:5],从第0个开始一直到第5个之前结束,总共切片了5个外星人。
str()只是将参数转换成字符串类型,便于阅读,len则是计算列表aliens的长度,不是指有多少个字节,而是指有多少个元素。

在字典中存储列表

我们可以假设一个调查人们喜欢的计算机语言的情景,每个人可以喜欢不止一种语言,将收集到的信息用列表呈现:

favorite_languages = {'jen': ['python', 'ruby']'sarah': ['c'], 
    'edward': ['ruby', 'go'], 
    'phil': ['python', 'haskell'],
    } 

当我们的列表的值对应多个信息的时候,可以很有效的采取这个方法。

在字典中存储字典

我们利用这样一种情景,将多个用户的多个信息收集起来,用字典嵌套字典的方式进行呈现:

users = {
    'aeinstein': {
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
        }, 
 
    'mcurie': {
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
        }, 
    }
 for username, user_info in users.items():
      print("\nUsername: " + username)
      full_name = user_info['first'] + " " + user_info['last']
      location = user_info['location']
      
      print("\tFull name: " + full_name.title())
      print("\tLocation: " + location.title())

我们可以很清晰的看到,一个uesrs字典里面包含了两个字典:aeinstein和mcurie。在for循环中,将users中的键-值对信息存储在username、user_info中,因此可以定义一个功能为记录全名的的变量full_name,来组合user_info[‘first’]与user_info[‘last’]。
最后输出可以得到用户信息的清晰呈现。

删除字典

删除字典用del命令,如下:

fruits = { 'John': 'apple', 
           'Mike': 'banana', 
           'Ashley': 'watermelon' 
         }
del fruits['John']  #删除键John 

如果仍然想要保留字典但是却不需要里面的信息,清空字典即可:

fruits.clear()  #清空字典

要是你完全不需要这个字典了,只需要删除它,还是用指令del:

del fruits  #删除字典

字典的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:
1.不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
如下示例:

fruits = { 'John': 'apple', 
           'John': 'banana', 
           'Ashley': 'watermelon' 
         }
print( "John likes " + fruits['John'] + "." )

最后会输出:John likes banana
John喜欢的就是banana了

2.键必须不可变,所以可以用数字、字符串或元组充当,而用列表就不行

错误示例:

#这是错误示范!!
dict = {['Name']: 'Runoob', 'Age': 7}
 
print ("dict['Name']: ", dict['Name'])
#这是错误示范!!

最后会得到错误提示
Traceback (most recent call last):
File “test.py”, line 3, in <module》
dict = {[‘Name’]: ‘Runoob’, ‘Age’: 7}
TypeError: unhashable type: ‘list’

感谢观看

欢迎各位批评指正
😃

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值