Python 字典(dict) 操作基础
来源:互联网 发布:淘宝为什么不能改名字 编辑:程序博客网 时间:2024/05/22 01:29
Python 字典与结构化数据
1.字典基本结构
1.1 创建存储生日的字典
birthday = {'Alice':'Ar 1','Bob':'July 7'}
1.2 查询生日的小程序
while True: print('Enter a name(blank to quit):') name = input() if name == '': break if name in birthday: print(birthday[name] + 'is the birthday of ' + name) else: print("I don't know the birthday of " + name) print("Tell me plz") newbday = input() birthday[name] = newbday print('Birthday database updated')
Enter a name(blank to quit):AliceAr 1is the birthday of AliceEnter a name(blank to quit):BobJuly 7is the birthday of BobEnter a name(blank to quit):ChenI don't know the birthday of ChenTell me plzJuly 22thBirthday database updatedEnter a name(blank to quit):ChenJuly 22this the birthday of ChenEnter a name(blank to quit):I don't know the birthday of Tell me plzBirthday database updatedEnter a name(blank to quit):
birthday
{'Alice': 'Ar 1', 'Bob': 'July 7', 'Chen': 'July 22th'}
#字典可以修改value,那么,怎么修改keybirthday['Alice'] = 'Apr 1st'birthday['Bob'] = 'July 7th'birthday
{'Alice': 'Apr 1st', 'Bob': 'July 7th', 'Chen': 'July 22th'}
2. 字典的方法
2.1 字典的 values() , keys() ,items()
for v in birthday.values(): print (v)for v in birthday.keys(): print(v)for v in birthday.items(): print(v)
Apr 1stJuly 7thJuly 22thAliceBobChen('Alice', 'Apr 1st')('Bob', 'July 7th')('Chen', 'July 22th')
'Alice' in birthday'Apr 1st' in birthday.values()'Apr 1st' in birthday.keys()
False
2.2 get方法
有对应键,返回键对应值;没有对应键存在,返回备用值
print('I think Rachel was born on '+ birthday.get('Rachel','a rainy day'))
I think Rachel was born on a rainy day
2.3 setdafault() 方法
为键赋予默认取值,返回 键的当前值;
setdefault(‘keys’,’default’)
# 字符统计程序message = 'In the preceding example, the kernel is chosen \because it represents an expansion of polynomials and can conveniently compute \high-dimensional inner products. In this example the kernel is chosen \because of its functional form in the representation 'count = {}for char in message: count.setdefault(char,0) count[char] = count[char] + 1print (count)
{'I': 2, 'n': 26, ' ': 37, 't': 14, 'h': 9, 'e': 32, 'p': 9, 'r': 10, 'c': 10, 'd': 4, 'i': 16, 'g': 2, 'x': 3, 'a': 12, 'm': 6, 'l': 9, ',': 1, 'k': 2, 's': 15, 'o': 14, 'b': 2, 'u': 5, 'f': 4, 'y': 2, 'v': 1, '-': 1, '.': 1}
2.4 漂亮打印 pprint 模块
import pprintpprint.pprint(count)# 等价于 print(pprint.pformat(count))
{' ': 37, ',': 1, '-': 1, '.': 1, 'I': 2, 'a': 12, 'b': 2, 'c': 10, 'd': 4, 'e': 32, 'f': 4, 'g': 2, 'h': 9, 'i': 16, 'k': 2, 'l': 9, 'm': 6, 'n': 26, 'o': 14, 'p': 9, 'r': 10, 's': 15, 't': 14, 'u': 5, 'v': 1, 'x': 3, 'y': 2}
3.小练习
3.1 井字棋
theBoard = {'top-l':'' , 'top-m':'' , 'top-r':'', 'mid-l':'' , 'mid-m':'' , 'mid-r':'', 'low-l':'' , 'low-m':'' , 'low-r':''}def printBoard(board): print(board['top-l'] + ' | ' + board['top-m'] + '| '+board['top-r']) print('-+-+-') print(board['mid-l'] + ' | ' + board['mid-m'] + '| '+board['mid-r']) print('-+-+-') print(board['low-l'] + ' | ' + board['low-m'] + '| '+board['low-r']) print('-+-+-')def gameStart(): printBoard(theBoard) i = 0 while True: chess = ['O','X'] print('where do you wanna place') position = input() if theBoard[position]: print('already full') print('Another choice plz') position = input() theBoard[position] = chess[i] printBoard(theBoard) i = 1 - i #判断棋盘是否已满,笨办法 k = 0 for value in theBoard.values(): if value: k = k+1 if k >=9 : print('All full,the end') break
3.2 嵌套的字典和列表
- 对复杂事物进行建模,字典列表中可能包含其他字典列表;
- 列表适合包含一组有序的值,字典适合包含关联的键和值
#示例程序:统计野餐事物总数allGuests = {'Ali':{'apple':16,'bread':12}, 'Bob':{'ham':1,'coffee':32,'apple':3}, 'Carol':{'bread':23,'coffee':2}}def totalBrought(guests,item): numBrought = 0 for k,v in guests.items(): #字典中item的循环 k,v numBrought = numBrought + v.get(item,0) return numBroughtprint('Number of things being brought:')print('- apples :'+ str(totalBrought(allGuests,'apple')))print('- bread :' + str(totalBrought(allGuests,'bread')))print('- coffee :'+ str(totalBrought(allGuests,'coffee')))
Number of things being brought:- apples :19- bread :35- coffee :34
3.3 好玩游戏的物品清单
stuff = {'rope':5,'torch':2,'gold':100,'sword':1}def inventoryDisplay(stuff): numTotal = 0 print('Inventory:') for k,v in stuff.items(): print( k +':'+ str(v)) numTotal = numTotal + v print ('total:'+ str(numTotal))#屠龙战利品 以列表形式存储dragonLoot = ['rope','rope','torch','gold','gold','gold','diamond']#列表到字典的函数def addToInventory(loot,stuff): countLoot = {} for k in loot: countLoot.setdefault(k,0) countLoot[k] = countLoot[k] + 1 for l in countLoot.keys(): stuff.setdefault(l,0) stuff[l] = stuff[l] + countLoot[l] return stuffinventoryDisplay(stuff)print(addToInventory(dragonLoot,stuff))
Inventory:rope:5torch:2gold:100sword:1total:108{'rope': 7, 'torch': 3, 'gold': 103, 'sword': 1, 'diamond': 1}
参考文献
《Python编程快速上手–让繁琐工作自动化》
阅读全文
1 0
- Python 字典(dict) 操作基础
- Python基础-dict字典
- python: dict(字典) 操作
- Python基础入门(十二)- dict 字典
- python基础篇--Dict(字典)
- Python基础之字典dict
- Python 字典及其操作(dict)
- python:字典(dict)
- Python基础学习篇—字典(dict)
- python中字典(dict)的常用操作
- Python中的字典(dict)
- Python 数据类型--字典(dict)基本操作
- 【Python基础】之对字典进行排序操作(sort by the values of dict)
- Python 中两个字典(dict)合并
- Python 中两个字典(dict)合并
- python中两个字典(dict)合并
- Python日常-两个字典(dict)合并
- Python 中两个字典(dict)合并
- 关于android 导入第三方.so库文件在低版本Android手机上正常使用,在5.0版本的手机上就出现闪退
- 重写鼠标悬停事件(针对IE)
- spring boot整合RabbitMQ(Direct模式)
- Winsock编程实例
- unity 贪吃蛇作战—2
- Python 字典(dict) 操作基础
- 顺序表的实现,插入,删除,定位,合并,打印
- Activity启动流程分析
- 在Spring Boot中使用@Scheduled实现定时任务
- 关于js中几种遍历方法性能的测试
- leetcode 318. Maximum Product of Word Lengths
- Redhat6.5二进制安装mysql5.7.9(详细)
- bootstrap获取隐藏列值
- Count on a tree SPOJ