#__author__ = 'juzi_juzi'
'''
类似于我们常用的字典,根据某个指定的内容,可以找到对应的详细解释;
解释为键值对存放,key -->> value;
特点:
1、存放为键值对的形式;
2、键不重复,值可重复;
3、键不可修改,不可变,值可修改,可存放任何对象;
'''
#初始化字典的两种方法:
#1、dict1 = dict()
#2、dict2 = {}
fruit_price={'apple':4,'orange':2.5,'banana':3}
#向字典中添加元素
fruit_price['sugarcane']=10
#修改字典中指定key的value
fruit_price['apple']=2.5
#获取指定key的value
print(fruit_price['orange']) #类似列表的写法,只是将列表的角标换成字典的key;
#***************删除指定字典相关内容 ***************
del fruit_price['sugarcane']
print(fruit_price)
fruit_price['sugarcane']=10
return_value = fruit_price.pop('sugarcane') #删除给定key的信息,返回key 对应的value;
print('pop key return value is:{} and old fruit_price
value is:{}'.format(return_value,fruit_price))
fruit_price['sugarcane']=10
fruit_price.clear() #清空了整个字典,返回None;
print(fruit_price)
#***************列表(元祖)转字典相关内容 ***************
#列表(元祖)转字典的前提是,列表(元祖)双元素;
list1 = (1,2)
list2 = ['key','value']
list3 = ['name',['zhangsan','lisi']]
new_dict = dict([list1,list2,list3])
print(new_dict) #{1: 2, 'key': 'value', 'name': ['zhangsan', 'lisi']}
#***************列表常用方法 ***************
#get() ,key 不存在fanhui Non,不抛异常;
cars ={'BMW':100,'BUICK':50}
car_bmw = cars.get('BMW') #获取指定key 的值;
car_das = cars.get('DAS',40) #获取指定key 的值,如果key 不存在,用默认的值显示;
print('bmw:{}, das:{}'.format(car_bmw,car_das))
#keys(), values(), items()
print(cars.keys()) #获取所有key,返回dict_keys;
print(cars.values()) #获取所有key,返回dict_value;
print(cars.items()) #获取所有key,返回dict_item;
print(list(cars.keys())) #获取所有key,返回keys列表;
print(list(cars.values())) #获取所有values,返回values列表;
print(list(cars.items())) #获取所有items,返回items列表;
#update() 更新字典,已有的覆盖,没有的添加;
car2 = {'Chevy':30,'Infiniti':60}
cars.update(car2) # 返回为None,修改了原字典;
print(cars) # {'BMW': 100, 'BUICK': 50, 'Chevy': 30, 'Infiniti': 60}
#popitem()方法,随机弹出字典中的一个Key-value对;看起来似乎总是弹出字典中最后的k-v;
print(cars.popitem()) #返回弹出的key,value组合,tuple(k,v);
k,v = cars.popitem() #这种写法更经常使用;
print('key is {} and value is :{}'.format(k,v))
# setdefault()方法,用于根据 key 来获取对应 value 的值;如果key在不存在,那么会先设置默认的value;
#然后在返回value; 其实这个方法叫getdefault更好理解;说白了就是key 存在不存在均能返回value;
cv = cars.setdefault('Citroen',25) #Citroen不存在,设置默认值返回;
bv = cars.setdefault('BMW',25) # BMW key 存在,所以不讲默认值赋予;
print('key not exist get value:{},key exist get value:{}'.format(cv,bv))
print(cars)
# fromkeys() 给定多个key,转换成字典的key,可设置默认值;
c_key_list = cars.keys() #获得cars Key列表;
c_key_tuple = tuple(c_key_list)
new_dict_from_list = dict.fromkeys(c_key_list)
new_dict_from_tuple = dict.fromkeys(c_key_tuple,80)
print(new_dict_from_list)
print(new_dict_from_tuple)