import time #引入time库,后续计算时间.
inform_m = {} #创建母字典
inform_s = {} #母字典下嵌套的子字典 #给母字典添加键-值
for i in range(1,100001):
inform_m.setdefault(str(i),inform_s.fromkeys(['name','sex','age'],'Undefined')) def search(dic = inform_m, content = 'Undefined'): #设置dic content默认参数,dic为要查找的字典,content为要查找的内容
time_b = time.time() #调用方法时记录启动时间 num_key = dic.items()
num_keys = len(num_key)
num_begin = 1
num_end = num_keys
state = True
i = 'off'
#初始化所有变量 while state:
if num_end == 1: #如果num_end == 1 判断第一项是否是我们要查找的。
if dic['1']['name'] == content:
num_end = 1
state = False
break
else:
num_end += 1
state = False
break
value = dic[str(num_end)]['name'] #获取最后一项值
if value == content:
value_b = dic[str(num_end - 1)]['name'] #获取前一项值
if value == value_b: #如果查找到了content,进而判断前一项是否与content一样,如果一样,则缩小范围,继续查找。如果不一样,证明找到了那么就可以终止循环了
if i == 'off': #i作为一个标准判断 num_begin 是否赋值,同学自己研究一下为什么要判断这个
num_end = num_end // 2
else:
num_m = num_begin
num_end = (num_end - num_m + 1) // 2 + num_begin
else:
state = False
else:
if num_end == num_keys:
state = False
else:
i = 'on'
num_m = num_begin
num_begin = num_end
num_end = (num_end - num_m + 1) // 2 + num_begin time_e = time.time()
print('调用二分查找算法开始时间:{} 结束时间:{}'.format(time_b,time_e))
return num_end def normal():
time_bb = time.time()
for ii in range(1,100001): value = inform_m[str(ii)]['name']
if value == 'Undefined':
break
else:
pass
time_ee = time.time()
print('调用普通算法开始时间:{} 结束时间:{}'.format(time_bb,time_ee))
return ii for j in range(1,94181): #给字典中的项赋值
inform_m[str(j)]['name'] = 'Jobs' print(search(),normal())

python 二分法查找字典中指定项第一次出现的索引的更多相关文章

  1. 如何根据字典值的大小,对字典中的项排序---Python数据结构与算法相关问题与解决技巧

    实际案例: 某班英语成绩以字典形式存储为: { 'LiLei' : 90, 'Jim' : 88, 'Lucy': 92 } 如何根据成绩高低,计算学生排名 -- 根据分数,进行排名,并且把排名信息添 ...

  2. python 学习笔记(三)根据字典中值的大小对字典中的项排序

    字典的元素是成键值对出现的,直接对字典使用sorted() 排序,它是根据字典的键的ASCII编码顺序进行排序,要想让字典根据值的大小来排序,可以有两种方法来实现: 一.利用zip函数将字典数据转化为 ...

  3. Python二分法查找及变种分析

    基于Python3 普通二分法查找目标值的index 二分法查找的思路很简单,先确定好列表nums的一头start一尾end,中间值middle根据头尾数值之和用地板除法除以2,即(start + e ...

  4. Ubuntu18.0 解决python虚拟环境中不同用户下或者python多版本环境中指定虚拟环境的使用问题

    一. 不同用户下配置virtualenvwrapper的问题 问题描述: 安装virtualnev和virtualnevwrapper之后,在.bashrc进行virtualenvwrapper的相关 ...

  5. python 二分法查找思考理解小白向け

    首先说一下二分法查找的思路.这是面向小白的课程,大佬请让步谢谢 给定一个有序的序列(必须是排好序的)例如[1,2,3,4,5,6,7,8,9,10,20,30,400],然后我们查询一个元素出现的坐标 ...

  6. python找出字典中value最大值的几种方法

    假设定义一字典,m = {"a":3,"e":6,"b":2,"g":7,"f":7,"c ...

  7. python字典中添加项

    body_daily_close = { "mappings": { "properties": { "trade_date": { &qu ...

  8. python字典中包含列表时:查找字典中某个元素及赋值

    直接上代码: 运行效果:

  9. python 二分法查找实例(递归、循环)

    二分法,主要应用于有序序列中,原理是每次查找都将原序列折半,逐渐缩小查找范围的一种算法. 需求 要求在一个有序序列中,例如[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30 ...

随机推荐

  1. BUUCTF-小明的保险箱

    小明的保险箱 16进制打开可以发现存在一个RAR压缩包,压缩包里面应该就是flag文本 使用ARCHPR破解即可

  2. windows下docker部署报错

    报错信息:Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:8848 -> 0.0.0 ...

  3. 软件测试—Day2

    day2 Q:面试过程中,性能测试你测试什么?关注的点是什么? A:程序的响应时间,系统的吞吐量,以及并发用户数,和tps,qps,以及DB的IOPS,和服务器的系统资源(CPU和内存).通过一定的工 ...

  4. HCNP Routing&Switching之BFD

    BFD技术背景 什么是BFD?它的主要作用是做什么的,这是我们学习BFD需要搞清楚的地方: BFD是Bidirectional Forwarding Detection的缩写,翻译成中文就是双向转发检 ...

  5. shell脚本三剑客:grep、sed、awk

    shell脚本三剑客:grep  sed  awk grep语法: grep [OPTIONS] PATTERN [FILE] 常用选项 -c                       统计匹配到的 ...

  6. 发明Linux的帕特里克

    Slackware Linux 是目前市场存活时间最长的 Linux 发行版之一,它基于一个叫做 SLS(Soft Landing Systems)的 Linux 项目而设计,易于使用和稳定. Sla ...

  7. 基于yum安装CDH集群

    一.环境准备 准备至少3台设备:CentOS7系统: 如果是在实验环境下,给虚拟机的内存至少4G,根建议1T,数据盘1T,由于是虚拟机,所以根分区和数据盘放心大胆的给:如果是在生产环境则多多益善:我这 ...

  8. UE4.25 Slate源码解读

    概述 Slate系统是UE的一套UI解决方案,UMG系统也是依赖Slate系统实现的. 问题: Slate系统是如何组织的? 控件树的父子关系是如何绑定的? Slate系统是如何渲染的? slate渲 ...

  9. Python3+Django2集成PayPal(贝宝)跨境支付三方接口以及订单查询和退款业务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_157 如果您所在的公司涉及外贸或者跨境支付业务,那一定听说过大名鼎鼎的PayPal,总的来说,PayPal在跨国贸易里的优势还是比 ...

  10. 快速体验Spring Boot了解使用、运行和打包 | SpringBoot 2.7.2学习系列

    SpringBoot 2.7.2 学习系列,本节内容快速体验Spring Boot,带大家了解它的基本使用.运行和打包. Spring Boot 基于 Spring 框架,底层离不开 IoC.AoP ...