Python入门:数据结构之字典(dict)(2)

之前一直使用dir(dict)的时候一直把前后有双“_”的方法也一起放在里面,既然现在也不讲,太多也看着挺烦。


file

昨天看书的时候顺便看到这个Pythonic的写法--使用列表推导式。这样带“_”也就没有了,剩下的字典操作方法,我尽力说明清楚。

[d for d in dir(west_team_msg) if not d.startswith('_')]

file

['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

至于什么是列表推导式,后面小结的时候会结合list、tuple、dict的特性加以说明。其实是个很简单的东西,也非常好用,在很多场合可以避免使用遍历+append的操作。

言归正传,自从悟空被大大王吃到肚子里后,就没了消息。三藏便让八戒去打听。八戒哪有悟空机灵,居然在妖怪洞穴门口就开始喊了:我大师兄呢?

里面小妖一看:怎么来个猪头猪脑的,是西天取经队伍的?于是拿出字典开始搜索。

for key,value in west_team_msg.items():
if value["外表"] == "猪":
print(key)

file

这个地方涉及到字典的一个items()方法,作用我们大致看一下
[in]:west_team_msg.items()
[out]:dict_items([('三藏', {'外表': '人', '职业': '和尚', '兵器': '无', '事迹': '西天取经', '故地': '东土大唐'}), ('悟空', {'外表': '猴子', '职业': '和尚', '兵器': '金箍棒', '事迹': '大闹天宫', '故地': '花果山', '技能': '七十二变'}), ('八戒', {'外表': '猪', '职业': '和尚', '兵器': '九齿钉耙', '事迹': '调戏嫦娥姐姐', '故地': '高老庄'}), ('悟净', {'外表': '沙妖', '职业': '和尚', '兵器': '降妖宝杖', '事迹': '打碎琉璃盏', '故地': '流沙河'}), ('小白龙', {'外表': '马/人/龙', '职业': '和尚/官二代', '兵器': '大宝剑', '事迹': '火烧明珠', '故地': '西海龙宫'})])

输出有点长,我们稍微格式化一下,看的清楚些
dict_items(
[('三藏', {'外表': '人', '职业': '和尚', '兵器': '无', '事迹': '西天取经', '故地': '东土大唐'}),
('悟空', {'外表': '猴子', '职业': '和尚', '兵器': '金箍棒', '事迹': '大闹天宫', '故地': '花果山', '技能': '七十二变'}),
('八戒', {'外表': '猪', '职业': '和尚', '兵器': '九齿钉耙', '事迹': '调戏嫦娥姐姐', '故地': '高老庄'}),
('悟净', {'外表': '沙妖', '职业': '和尚', '兵器': '降妖宝杖', '事迹': '打碎琉璃盏', '故地': '流沙河'}),
('小白龙', {'外表': '马/人/龙', '职业': '和尚/官二代', '兵器': '大宝剑', '事迹': '火烧明珠', '故地': '西海龙宫'})
])

简化下得到
[('三藏',{})
('悟空',{})
('八戒',{})
......]
"三藏","悟空"这些其实是west_team_msg的键(key),
后面的{}就是west_team_msg的键对应的值(value)
也就是说,items()的作用,就是把字典里面所有的键值对单独拿出来编成(key,value)这样的元组形式
那keys,values的作用也很好理解了:就是单独把键或者值拿出来

file

for key,value in west_team_msg.items():
if value["外表"] == "猪":
print(key)

OUTPUT:八戒

这里用for就会遍历items()得到的键值对元组,
如果里面有一个值对应"外表"是"猪",就打印出来,那我们看到得到的结果是"八戒"

写的程序都比较简单,仅仅作为入门演示,实际工作中要尽可能逻辑性强化一点。

这些小妖一看是三藏的徒弟八戒,于是一起大喊道,你大师兄被我们大王吃的,现在估计连骨头渣子都不剩了。

八戒一听大师兄没了,垂头丧气的就回去了。回到村子后,有听悟净说师傅也被不知道哪来的妖风给卷走了。

悟净很着急,八戒却动了歪脑筋:沙师弟,你看师傅和大师兄都没了,不如我们把行李分了,你回你的流沙河,我回我的高老庄。说着就动起了手。

things = {}
things["八戒"] = []
things["悟净"] = []

things["悟净"].append("师傅的袈裟")
things["八戒"].append("化缘的金钵")

file

悟净一把抢了过来,把八戒分东西的字典给清除了。

things.pop("八戒") #pop()根据传入的键删除键值对
things.popitem() #popitem()直接把字典里面的一组键值对删除

当然,用clear()是最快的,直接一次性删除字典里面的所有键值对,不过这里悟净是一样一样把东西收回来了,所以分次删除就行。

八戒生气的坐在一边:反正没了师傅,西天也不用去了,分了算了。

悟净劝八戒到:大师兄本领高强,我不相信会被妖怪吃了。于是强拉着八戒一起去找悟空去。

预知后事如何,请听下回因式分解。完结篇将会把剩下的一些操作方法讲完。

file
file

创作不易,请大家多多关注、点赞、在看三连支持,谢谢~~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容