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. redis击穿,穿透,雪崩,分布式锁,api(jedis,luttuce)

    击穿:(redis做缓存用,肯定发生了高并发,到达数据库查询) 设置key 的过期时间,过期后没有这个key,找不到了,就穿过了(其中一个key过期导致并发访问数据库) LRU (LRU,即:最近最少 ...

  2. 18.Tomcat部署及优化

    Tomcat部署及优化 目录 Tomcat部署及优化 Tomcat简介 Tomcat核心组件 Web容器 什么是 servlet? 什么是 JSP? Container 结构分析 Tomcat 请求过 ...

  3. SAP Using Text Modules in Adobe Forms

    In this demo we will create an adobe form which displays text in two different languages (English or ...

  4. 关于swiper插件在vue2的使用

    最近做项目用到了vue-awesome-swiper,总结一下使用方法 第一步:安装依赖 npm install swiper vue-awesome-swiper --save or npm ins ...

  5. KTL 一个支持C++14编辑公式的K线技术工具平台 - 第七版,体验GPGPU。

    K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...

  6. 【RocketMQ】消息的刷盘机制

    刷盘策略 CommitLog的asyncPutMessage方法中可以看到在写入消息之后,调用了submitFlushRequest方法执行刷盘策略: public class CommitLog { ...

  7. 使用Runnable和Callable接口实现多线程的区别

    使用Runnable和Callable接口实现多线程的区别 先看两种实现方式的步骤: 1.实现Runnable接口 public class ThreadDemo{ public static voi ...

  8. resultMap自定义映射(多对一)

    自定义resultMap,处理复杂的表关系,实现高级结果集映射 1) id :用于完成主键值的映射 2) result :用于完成普通列的映射 3) association :一个复杂的类型关联;许多 ...

  9. 编译安装Python出现“pip is configured with locations that require TLS/SSL, however the ssl.....”

    ubuntu: sudo apt-get install libssl-dev Cenos: sudo yum install openssl-devel 重新编译: ./configure --en ...

  10. C++系统函数

    C++语言预先编写了很多常用函数提供给广大程序员使用,这些函数被统称为系统函数.C++语言全盘继承了C语言的标准C库,另外又增加了一些新的库(更多的是系统类库),这些新库被统称为C++标准库. 一.C ...