Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2856848
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Python/Ruby

2012-02-29 15:23:14

  • 字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把(名字)和(详细情况)联系在一起。注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息。
  • 注意,你只能使用不可变的对象(比如字符串)来作为字典的键,但是你可以不可变或可变的对象作为字典的值。基本说来就是,你应该只使用简单的对象作为键。
  • 键值对在字典中以这样的方式标记:d = {key1 : value1, key2 : value2 }。注意它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。
  • 记住字典中的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。字典是dict类的实例/对象


  1. #!/usr/bin/python
  2. # Filename: using_dict.py

  3. # 'ab' is short for 'a'ddress'b'ook

  4. ab = { 'Swaroop' : 'swaroopch@byteofpython.info',
  5.              'Larry' : 'larry@wall.org',
  6.              'Matsumoto' : 'matz@ruby-lang.org',
  7.              'Spammer' : 'spammer@hotmail.com'
  8.      }

  9. print "Swaroop's address is %s" % ab['Swaroop']

  10. # Adding a key/value pair
  11. ab['Guido'] = 'guido@python.org'

  12. # Deleting a key/value pair
  13. del ab['Spammer']

  14. #updaute a key/value pair
  15. ab['Larry']='nba@163.com'
  16. print '\nThere are %d contacts in the address-book\n' % len(ab),ab['Larry']
  17. for name, address in ab.items():
  18.     print 'Contact %s at %s' % (name, address)

  19. if 'Guido' in ab: # OR ab.has_key('Guido')
  20.     print "\nGuido's address is %s" % ab['Guido']

    输出:
  21. Swaroop's address is swaroopch@byteofpython.info

  22. There are 4 contacts in the address-book
  23. nba@163.com
  24. Contact Swaroop at swaroopch@byteofpython.info
  25. Contact Matsumoto at matz@ruby-lang.org
  26. Contact Larry at nba@163.com
  27. Contact Guido at guido@python.org

  28. Guido's address is guido@python.org


我们使用已经介绍过的标记创建了字典ab。然后我们使用在列表和元组章节中已经讨论过的索引操作符来指定键,从而使用键/值对。我们可以看到字典的语法同样十分简单。

我们可以使用索引操作符来寻址一个键并为它赋值,这样就增加了一个新的键/值对,就像在上面的例子中我们对Guido所做的一样。

我们可以使用我们的老朋友——del语句来删除键/值对。我们只需要指明字典和用索引操作符指明要删除的键,然后把它们传递给del语句就可以了。执行这个操作的时候,我们无需知道那个键所对应的值。

直接增加,只要key不存在 ,

  1. # Adding a key/value pair
  2. ab['Guido'] = 'guido@python.org'

    修改把存在在key,拿出来改它的值
     

    1. #updaute a key/value pair
    2. ab['Larry']='nba@163.com'


接下来,我们使用字典的items方法,来使用字典中的每个键/值对。这会返回一个元组的列表,其中每个元组都包含一对项目——键与对应的值。我们抓取这个对,然后分别赋给for..in循环中的变量name和address然后在for-块中打印这些值。

我们可以使用in操作符来检验一个键/值对是否存在,或者使用dict类的has_key方法。你可以使用help(dict)来查看dict类的完整方法列表。


阅读(899) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~