python学习之字典

#字典的创建
## 1 直接法
dict1 = {'Name': 'TianXin','Nickname': 'Lele','Age':3}
## 2 使用dict()方法,通过其它映射(字典)或者(键,值)这样的序列对建立
items = [('Name','TianXin'),('Nickname','Lele',),('Age',3)]
dict2 = dict(items)
dict3 = dict([('Name','TianXin'),('Nickname','Lele',),('Age',3)])
## 3 使用内建方法fromkeys()创建’默认‘字典,字典中元素具有相同的value(如果没有给出,默认为none)
dict4 = {}.fromkeys(('x','y','z','a'),1)
dict5 = {}.fromkeys(('x','y','z'))
print(dict4)
print(dict5)

#访问字典中的值
## 1 通过key访问value之get方法
print("dict1['Name']:",dict1.get('Name'))
print("dict1['Name']:",dict1.get('没有'))
## 2 dictionary['key1']
print("dict2['Name']:",dict2['Name'])
#print("dict2['Name']:",dict2['没有'])
##但是当key1不存在其中时,会报错;此时用get则返回None
## 3 返回字典所有值的列表
print("dict2's values:",dict2.values())

#访问字典中的key
## 1 检查是否含有key1
print("Key Name in dict1?:",('Name' in dict1))
print("Key Name mot in dict1?:",('Name' not in dict1))
## 2 返回字典中键的列表
print("All the keys in dict1:",(dict1.keys()))

#访问键值对
##  1 修改或添加
dict4['x']=100
dict4['d']=1000
print(dict4)
## 2 遍历
for r in dict3:
    print(r)

#删除
## 1 按key删除; 若key不在字典中,将报错 KeyError
del dict4['x']
print ("dict4 after del \'x\':",dict4)
## 2 pop(key[,default])
print("dict2.pop:",dict2.pop('Age'))
print("dict2 after pop:",dict2)
## 3 利用popitem方法是随机弹出一个键值对
print("dict4.popitem():",dict4.popitem())
print("dict4 after popitem:",dict4)
## 4 删除所有项
dict1.clear()
print("dict1 after clear:",dict1)

# len(dictionary) 返回字典项个数
print("length of dict1:",len(dict2))

一些程序摘抄自《机器学习实践》,用香农公式计算信息熵
def calcShannonEnt(dataSet):
    numEntries = len(dataSet)
    labelCounts = {}
    for featVec in dataSet: #the the number of unique elements and their occurance
        currentLabel = featVec[-1]
        if currentLabel not in labelCounts.keys(): 
            labelCounts[currentLabel] = 0
        labelCounts[currentLabel] += 1
    shannonEnt = 0.0
    print (labelCounts)
    print (labelCounts.keys())
    for key in labelCounts:
        prob = float(labelCounts[key])/numEntries
        shannonEnt -= prob * log(prob,2) #log base 2
    return shannonEnt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值