no.4 2018-1-25 dic 、json、random(),去列表中重复元素

程序1:手机销售(可以使用字典完成)
程序2:找出生成的100个随机数中出现次数最多的数。
程序3:json格式化代码(使用在线格式化),获取网站中的数据

在线格式化网址:
                 http://tool.oschina.net/codeformat/json

1、字典dict:
    字典是一个容器类,可以用来存储数据。
    字典存储数据:key:value(键值对),字典中存储的数据是没有顺序的
     key 必须是不可变的,常量都可以作为key,一般使用字符串作为字典中的key,也可以使用数字等不可变类型的值。 key 是唯一的,如果有多个相同key的情况,保留最后一个key对应的值
# 列表 存储数据特点:1.有序的 2.每一个数据都有一个索引,通过索引可以对数据进行查询、修改、删除。
例如:dict_1 = { 'name' : 'zhangsan' , 'age' : 22 , 'phone' : 110 , 'sex' : '男' , 'name' : 'wnagwu' }
     print (dict_1)  #输出是无序的
   输出:{'age': 22, 'name': 'zhangsan', 'sex': '男', 'phone': 110}
  1.1 从字典中取值:
      法1:在字典中根据key取值。(中括号)
         name = dict_1['sss']
        print(name)
      法2:get(key, defalut)函数,获取字典中对应key的值 , 如果key不存在,取默认值,如果key存在,取出对应的结果。避免因为键报错。
       例如: name = dict_1.get('name','0')
              print(name)
  1.2 向字典中添加或修改数据 如果这个key不存在,添加数据,如果key存在,修改这个key对应的值。
            例如: dict_1[ 'name' ] = 'lisi'
                  dict_1[ 'ssss' ] = '4s'
   1.3 删除字典中的数据:
        法1:根据key删除字典中的数据:例如: del dict_1[ 'ssss' ]
        法2: pop(key) key必要参数,要移出的数据对应的key。
                例如: s = dict_1.pop( 'name' )
                     print(s)
         法3: popitem() 随机从字典中取出一个键值对,并且将键值放在元组中
                例如:s = dict_1.popitem()
                      print (s)
         法4:删除字典中所有的键值对:
                例如:dict_1.clear()
                      print(dict_1)
      1.4  keys()函数 获取字典中所有的键,放在一个列表内:
# 获取字典中所有的key
keys = dict_1.keys() #print(keys) 输出:dict_keys(['name', 'sex', 'phone', 'age'])
# 取出所有的keys
for key in keys:
    # 根据key取出对应的值
    value = dict_1[key]
    print('%s:%s'%(key,value))

输出age:22
       sex:男
       name:zhangsan
       phone:110
    1.5 values()函数 获取字典中所有的value,返回的是一个列表:
# 获取字典中所有的value
values = dict_1.values()
    #print(values)   输出:dict_values(['zhangsan', 22, '男', 110])
# for循环取出所有的value
for value in values:
    print(value)
输出:110
        22
        zhangsan
        男
     1.6  items()函数 获取字典中所有的键值对,返回的是一个个小元组,放在一个大列表内:
items = dict_1.items()
# [('phone', 110), ('sex', '男')]
#print(items)  
输出:dict_items([('phone', 110), ('age', 22), ('sex', '男'), ('name','zhangsan')]) 
# for 循环遍历items
for item in items:
    # 从元组中 根据索引取出数据
    key = item[0]
    value = item[1]
    print('键:%s 值:%s'%(key, value))
输出:
    键:phone 值:110
    键:age 值:22
    键:sex 值:男
    键:name 值:zhangsan
    1.7 判断字典中是否拥有某个key 。或者可以使用 has_key( 函数
if 'phone' in dict_1.keys():
    print('有这个key')
else:
    print('没有这个key')
2、 random()函数 的列表生成式: (具体参考CSDN博客)
numbers = [random.randint(0, 100) for x in range(100)]
#[最终放在列表中的数据 for循环] for中只有一个参数,默认开头序号是0
#number2 = [x*x for x in range(100)]
3、在python中发送请求:( json
# 下载requests包,使用requests发请求
# windows+r 输入cmd 回车打开命令行工具  输入pip install requests
# 输入pip list 查看已经安装过的包
import requests
# python内置的包,json
import json
#发送一个get请求,获取url地址下的资源内容
    # get(url) 需要将url地址作为参数进行传递
    # response 接受服务器返回的响应数据
     response = requests.get(url)
    # 把 json字符串 转换 python中的字典或列表
     weather_dict = json.loads(response.content)
    # 根据key取出字典中对应的值
    date = weather_dict.get('date')
    # 取出results列表
    results = weather_dict['results']
4、去除列表中的重复元素:
   法1:顺序可能发生改变:
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
print (l2)   输出:['a', 'c', 'd', 'b']
    法2:输出列表内元素顺序不变: 用list类的sort方法
l1 = ['b','c','d','b','c','a','a']
l2 = list(set(l1))
l2.sort(key=l1.index)
print (l2)    输出:['b', 'c', 'd', 'a']
也可以这样写:
l1 = ['b','c','d','b','c','a','a']
l2 = sorted(set(l1),key=l1.index)
print (l2)
附:生成一个列表,存放100个随机整数,找出出现次数最多的数字(可能不止一个)
 #字典方式
import random
# 列表推导式/生成式
numbers = [random.randint(0, 100) for x in range(100)]
# [最终放在列表中的数据 for循环]
# number2 = [x*x for x in range(100)]
result_dict = {}
for num in numbers:
    # 获取数字在列表中出现的次数
    count = numbers.count(num)
    # 把数字作为key,出现次数作为值value
    result_dict[num] = count
    # 找出字典中最大的值,这个值就是出现的最高次数
result_dict.values()返回一个列表
h_count = max(result_dict.values())
# 通过次数,找到次数对应的值
for item in result_dict.items():
    # item键值对的小元组
    value = item[1]
    if value == h_count:
        key = item[0]
        print('出现次数最多的数字为:%s ,次数为:%s'%(key, value))
 #列表方式
import random
num_list=[]
total_list=[]
count_list=[]
num=[]
i=0
#生成100个0-100的随机数
while i<=100:
    a=random.randint(0,100)
    num_list.append(a)
    i+=1
#将产生的数字和出现的次数放在一个列表中
for x in num_list:
    count=num_list.count(x)
    xu_num_list = [x,count]
    count_list.append(count)
    #如果需要遍历小列表,必须将小列表放在大列表中
    #把生成的小列表放在一个大列表中
    total_list.append(xu_num_list)
#找出最高次数
for x in range(0,len(total_list)):
    xu_num_list=total_list[x]
    hig=max(count_list)
    if xu_num_list[1]==hig:
        num.append(xu_num_list[0])
    #去除列表中重复的出现的元素
num2=list(set(num))
#出现问题,同一个数字多次显示,显示列表中的数据时,不带有列表的符号
#如果不想输出列表中的数据带有中括号,可以遍历列表中的元素 单独输出
print('出现次数最多的数字有:%s 出现次数为:%s'%(num2,hig))










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值