Python —— 字典 1_笨小古的博客-CSDN博客_pythonzidian1
关于对字典的键、值的操作
先创建一个字典:
BirthAndDeath = {
'birth':{
'Mandarin':0.0121,
'English':0.0136,
'Spanish':0.0206,
'Hindi':0.0161,
'Russian':0.0140,
'Portuguese':0.0141,
'Bengali':0.0193,
'French':0.0113,
'Japanese':0.0082,
'German':0.0097,
},
'death':{
'Mandarin': 0.0071,
'English': 0.0086,
'Spanish': 0.0078,
'Hindi': 0.0058,
'Russian': 0.0141,
'Portuguese': 0.0067,
'Bengali': 0.0057,
'French': 0.0082,
'Japanese': 0.0094,
'German': 0.0093,
},
'origin':{
'Mandarin': 850,
'English': 353,
'Spanish': 400,
'Hindi': 324,
'Russian': 170,
'Portuguese': 200,
'Bengali': 190,
'French': 76,
'Japanese': 130,
'German': 78,
},
'migration':{
'Mandarin': 178,
'English': 510,
'Spanish': 90,
'Hindi': 214,
'Russian': 26,
'Portuguese': 30,
'Bengali': 20,
'French': 87,
'Japanese': 41,
'German': 8,
}
}
如果想要获取'birth'、'death'、' origin'或者'migration'的内容,可以取
BirthAndDeath['death']
{'Mandarin': 0.0071, 'English': 0.0086, 'Spanish': 0.0078, 'Hindi': 0.0058, 'Russian': 0.0141, 'Portuguese': 0.0067, 'Bengali': 0.0057, 'French': 0.0082, 'Japanese': 0.0094, 'German': 0.0093}
这时候如果想要'death'中关于某一具体语言类型的数据时,可以取
BirthAndDeath['death']['English']
0.0086
也许会有人想要尝试利用索引来取出,然而是不可行,当然对于列表,如果知道位置,利用索引是很方便的。
接下来,我想要将'birth'中的所有键取出,那么可以这样
BirthAndDeath['birth'].keys()
['Mandarin', 'English', 'Spanish', 'Hindi', 'Russian', 'Portuguese', 'Bengali', 'French', 'Japanese', 'German']
这看样子像是列表格式的,那么是与不是,这是个问题。
验证一下:
type(BirthAndDeath['birth'].keys())
dict_keys
根据返回的结果得知这是字典键类型。那到底能不能按列表来操作呢,用个索引试下:
bb = BirthAndDeath['birth'].keys()
print(bb[0])
'dict_keys' object is not subscriptable
那就是不行咯!
继续!取出'birth'中的所有值:
BirthAndDeath['birth'].values()
dict_values([0.0121, 0.0136, 0.0206, 0.0161, 0.014, 0.0141, 0.0193, 0.0113, 0.0082, 0.0097])
如果想要将这些值求和,一个一个地取出然后相加是一种办法,但是有简单快捷地方法吗?
有!是可以直接对这些值进行求和的(这一点是与列表一样的):
sum(BirthAndDeath['birth'].values())
0.139
也可以先将其转换为列表类型,然后求和:
aa = list(BirthAndDeath['birth'].values())
print(aa[0])
0.0121
sum(aa)
0.139
结果一致!
另外,还有一种方法获取键、值:
for key,value in BirthAndDeath['birth'].items():
print(key,"--",value)
Mandarin -- 0.0121 English -- 0.0136 Spanish -- 0.0206 Hindi -- 0.0161 Russian -- 0.014 Portuguese -- 0.0141 Bengali -- 0.0193 French -- 0.0113 Japanese -- 0.0082 German -- 0.0097