第六章 字典【Python从入门到实践】

我思故我在:

当key的大小写不一致时,按首字母排序会发生错误

favorite_langues={
    'Kim':'python',
    'Tom':'C',
    'Amy':'ruby',
    'Jone':'C++',
    }
for name in sorted(favorite_langues.keys()):
    print(name.title() + ',thank you for taking poll!')

favorite_langues={
    'Kim':'python',
    'Tom':'C',
    'Amy':'ruby',
    'jone':'C++',
    }
for name in sorted(favorite_langues.keys()):
    print(name.title() + ',thank you for taking poll!')

课本重点代码:

#字典:大括号
aline_0={'color':'green','points':5}
print(aline_0['color'])
print(aline_0['points'])

#访问字典中的元素:中括号
new_points=aline_0['points']
print('You just earned '+str(new_points)+' points !')

#添加字典中的元素:中括号
print(aline_0)
aline_0['x_pointition']=0
aline_0['y_pointition']=25
print(aline_0)

#改变字典中的元素:中括号
print("The aline is "+aline_0['color']+".")  #当前颜色
aline_0['color']="yellow"     #改变颜色为黄色
print("The aline is now "+aline_0['color']+".")

#对字典中的元素值做出改变
aline_0={'x_pointition': 0, 'y_pointition': 25,'speed':'medium'}
print('Original x-position '+str(aline_0['x_pointition'])+".")

if aline_0['speed']=='slow':
    x_increment=1
elif aline_0['speed']=='medium':
    x_increment=2
else:
    x_increment=3
aline_0['x_pointition']=aline_0['x_pointition'] + x_increment
print('New x-position '+str(aline_0['x_pointition'])+".")

#删除
aline_0={'color':'green','points':5}
del aline_0['color']
print(aline_0)

#字典中的其他格式:注意换行的位置,最后多加一个逗号
favorite_languages={
    'kim':'python',
    'Tom':'C',
    'Amy':'ruby',
    'jone':'C++',
    }
print(favorite_languages)

#遍历字典:把前边这个单词,含义分别打印出来
user_0={
    'user_name':'efermi',
    'first':'enrico',
    'last':'fermi',
}
for key,value in user_0.items():
    print('\nkey:'+key)
    print('\nvalue:'+value)

#生词解释分开用
favorite_languages={
    'kim':'python',
    'Tom':'C',
    'Amy':'ruby',
    'jone':'C++',
    }

for name,language in favorite_languages.items():     #.变量items():提出来key、value
    print(name.title()+"'s favoritelangues is "+language.title())

for name in favorite_languages.keys():      #变量.keys():提出来key
    print(name.title())

#对于字典中的人,打出名字,如果这个人在friends里边,多打出一句话
favorite_languages={
    'Kim':'python',
    'Tom':'C',
    'Amy':'ruby',
    'Jone':'python',
    }
friends=['kim','jone']
for name in favorite_languages.keys():      #变量.keys():提出来key
    print(name.title())
    if name in friends:
        print('Hi, '+name.title()+',I see your favorite langues is '+language.title()+'!')

#如果这个人不在偶喜欢语言这个列表里,说明他没有参加采访,告诉他情投票
if 'phil' not in friends:
    print("Phil,please take our poll!")

#按顺序:想用一定的顺序打印,需要用sorted()
for name in sorted(favorite_languages.keys()):
    print(name.title() + ',thank you for taking poll!')

#按原来字典中的字母顺序打印出来这个人名:可能会存在重复打印
print("The following languages have been mention:")
for language in favorite_languages.values():
    print(language.title())      #会打印出2个python

#不重复打印:set(~~)
print("The following languages have been mention:")
for language in set(favorite_languages.values()):
    print(language.title())      #会打印出1个python

#嵌套:     列表=['字典0','字典1','字典2']
aline_0={'color':'green','points':5}
aline_1={'color':'yellow','points':10}
aline_2={'color':'red','points':15}

alines=[aline_0,aline_1,aline_2]
for aline in alines:
    print(aline)

#生成30个外星人

alines=[]
for aline_number in range(30):     #从0——29取30次
    new_aline={'color':'green','points':5,'speed':'medium'  }
     ##但这个外星人的变好在循环中并没有使用
    alines.append(new_aline)

for aline in alines[:5]:
     print(aline)   #打印出前5个
print(".....")   #后边的省略
##打印外星人的数量,用len()
print("Total number of alines: "+str(len(alines)))

#改变前3个字典中的内容(颜色、速度、分度值)
for aline in alines[:3]:
    if aline['color']=='green':
          aline['color']='yellow'
          aline['speed']='fast'
          aline['points']=20
#打印出前5个
for aline in alines[:5]:
      print(aline)   #打印出前5个
print(".....")   #后边的省略                             

#前5个外星人升级
for aline in alines[:5]:
    if aline['color']=='green':     
          aline['color']='yellow'
          aline['speed']='fast'
          aline['points']=10
    elif aline['color']=='yellow':
         aline['color']='red'
         aline['speed']='slow'
         aline['points']=15
#打印出前5个
for aline in alines[:5]:
      print(aline)   #打印出前5
print(".....")   #后边的省略

#字典={'单词1':'解释1','单词2':['解释1','解释2',]}

pizzas={
    'crust':'thick',
    'topping':['mushroons','extra cheese'],
}
print('You ordered a '+pizzas['crust']+'-crust pizza'+" with the following toppings:")
for topping in pizzas['topping']:  #这里把toppings值取出来
      print('\t-'+topping)   

#字典中的多个列表
favorite_languages={
    'kim':['python','C'],
    'Tom':['C','ruby'],
    'Amy':['ruby'],
    'jone':['C++','go'],
    }
#元素分开name取成值,languages取成列表
for name,languages in favorite_languages.items():
    print('\n'+name.title()+"'s favorite languages are:")
    ##从列表再提出元素
    for language in languages:
      print('\t-'+language.title())      #会打印出1个python

#字典中的字典  字典={字典0,字典1}
#字典={'新华字典':{'我':'美丽'},'牛津字典':{'me':'beautiful'},'Le petit Nicola':{'Moi':'La plus belle'},}
users={
    'aeinstein':{
        'first':'albert',
        'last':'ainstein',
        'location':'princeton',
    },
    'murie':{
        '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('Locatio: '+ location.title())

课后习题:

# 6-1 人:使用字典来存储一个熟人的信息,包括名、姓、年龄 和居住的城市。将存储在该字典中的每项信息都打印出来。
messages={'first_name':'Freya','last_name':'Qin','age':23, 'city':'London',}
for key,value in messages.items():
    print('\nkey:'+key)
    print('value:'+str(value))

# 6-2 喜欢的数字:使用字典来存储一些人喜欢的数字。5个人的名字作字典中的键;每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字 和喜欢的数字。
favorite_digits={'Freya':12,'alice':56, 'kim':78, 'koko':99,}
for key,value in favorite_digits.items():
    print('\nname:' + key)
    print('favorite_digit:' + str(value))

#6-3 词汇表1:想出你在前面学过的5个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
# 以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;
# 也可在一行 打印词汇,再使用换行符(\n )插入一个空行,然后在下一 行以缩进的方式打印词汇的含义。Vocabulary=['code lay out':''代码布局','Whitespaces in Expressions':'表达式中的空格','Naming Convertion':'命名规范','pop':"弹出",'Programming recommendations':'编程建议',]
Vocabulary={'code lay out':'代码布局','whitespace in expression':'表达式中的空格','Naming Coventions':'命名规范','Programming recommendations':'编程建议'}
for word,interpretation in Vocabulary.items():
    print(word+':' )
    print(interpretation)

# #6-4 词汇表2:练习6-3而编写的代码,将其中一系列print语句替换为一个遍历字典中的键和值的循环。
# 再在词汇表中添加5个Python术语,这些新术语及其含义将自动包含在输出中。
Vocabulary={'code lay out':'代码布局','whitespace in expression':'表达式中的空格','Naming Coventions':'命名规范','Programming recommendations':'编程建议'}
Vocabulary['global variable names']='全局变量名'
Vocabulary['function annotation']='功能注释'
Vocabulary['indentation']='缩进'
Vocabulary['binary operator']='运算符'
Vocabulary['string quotes']='字符串引号'
for word,interpretation in Vocabulary.items():
    print(word+':' )
    print(interpretation)


#6-5 河流:创建一个字典,在存储三条大河流及其流经的国家。
# 使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”。
# 使用循环将该字典中每条河流的名字都打印出来。使用循环将该字典包含的每个国家的名字都打印出来。
rivers={'the Amazon':'Brazil', 'Mississippi River':'America','Yellow rive':'China','Nile': 'Egypt'}
for river,country in rivers.items():
    print('The '+river.title()+' runs through ' +country.title()+'.')
for river in rivers.keys():
    print(river)
for country in rivers.values():
    print(country)

#6-6 调查:在6.3.1节编写的程序favorite_languages.py中执行以下操作。
# 创建一个应该会接受调查的人员名单,有些人已包含在字典中,而其他人未包含在字典中。
# 遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
favorite_languages={
    'Kim':'python',
    'Tom':'C',
    'Amy':'ruby',
    'Jone':'python',
    }
investigations=['Kim','Jone']
for name in favorite_languages.keys():
    if name in investigations:
        print('Thanks, '+name.title()+'!')
    else:
        print(name.title()+",please take our poll!")

#6-7 人:在6-1中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people的列表中。
# 遍历这个列表,将其中每个人的所有信息都打印出来。
messages_1={'first_name':'Freya','last_name':'Qin','age':23, 'city':'London',}
messages_2={'first_name':'Ge','last_name':'kaixin','age':23, 'city':'England',}
messages_3={'first_name':'WANG','last_name':'Amy','age':23, 'city':'England',}
peoples=[messages_1,messages_2,messages_3]
for people in peoples:
  for key,value in people.items():
    print('\nkey:'+key)
    print('value:'+str(value))

#6-8 宠物:创建多个字典,对于每个字典,都使用一个宠物的名称 来给它命名;在每个字典中,包含宠物的类型及其主人的名字。
#将这些字典存储在一个名为pets的列表中,再遍历该列表,并将宠物的所有信息都打印出来。
dog={'type':'dog','owner':'Kim'}
cat={'type':'cat','owner':'Freya'}
monkey={'type':'monkey','owner':'Amy'}
pig={'type':'pig','owner':'koko'}
pets=[dog,cat,monkey,pig]
for pet in pets:
  for key,value in pet.items():
    print('\n'+key+':')
    print('——'+value)

# #6-9 喜欢的地方:创建一个名为favorite_places 的字典。在这个字典中,将三个人的名字用作键;
# 对于其中的每个人,都存储他喜欢的1~3个地方。
# 为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。
favorite_places={'alice':['Dali','DaLian','Shenzhen'],
                 'Amy':['Nanjing','Hangzhou','Chongqing'],
                 'koko':['Shanghai','Beijing','London'],
                }
for name,places in favorite_places.items():
    print('\n' + name + '喜欢的地方:')
    for place in places:
        print(place)

#6-10 喜欢的数字:修改6-2,让每个人都可以有多个喜欢的数字,将每个人的名字及其喜欢的数字打印出来。
favorite_digits={'Freya':[12,66,89],
                 'alice':[56,34,78],
                 'kim':[78,98],
                 'koko':[99,65],
                 }
for name,numbers in favorite_digits.items():
    print('\n'+ name.title()+' favorite_digits:')
    for number in numbers:
        print('——' + str(number))

# 6-11 城市 :创建一个名为cities 的字典,其中将三个城市名用作键;
#对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。
#在表示每座城市的字 典中,应包含country 、population 和fact 等键。将每座城市的名字以及有关它们的信息都打印出来。
cities={'Xi an':{'country':'China','population':'15万', 'fact':'Big Wild Goose Pagoda',},
    'London':{'country':'England','population':'5万', 'fact':' the London Eye',},
    'New york':{'country':'America','population':'10万', 'fact':' Scenic Spot Times Square',},
}
#方式1:
for name, features in cities.items():
    print(name + "的情况如下:")
    for key,city in features.items():
        print("\t" + key + " : " + city)
#方式2:
for name, features in cities.items():
    print(name + "的情况如下:")
    print(features)

# 6-12 扩展 :本章的示例足够复杂,可以以很多方式进行扩展了。 请对本章的一个示例进行扩展:添加键和值、调整程序要解决的问 题或改进输出的格式。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值