python字典序问题实例
作者:shichen2014 发布时间:2023-07-31 05:46:58
标签:python,字典
本文实例讲述了python字典序问题,分享给大家供大家参考。具体如下:
问题描述:
将字母从左向右的次序与字母表中的次序相同,且每个字符最大出现一次..例如:a,b,ab,bc,xyz等都是升序的字符串.现对字母表A产生的所有长度不超过6的升序字符串按照字典充排列并编码如下:
1 | 2 | .. | 26 | 27 | 28 | ... |
a | b | .. | z | ab | ac | .. |
对一个升序字符串,迅速计算出它在上述字典中的编码。
实现代码如下:
import string
all_letter = string.ascii_lowercase
def gen_dict():
result = {}
list_num_one = [ a_letter for a_letter in all_letter ]
list_num_two = [ i + j for i in all_letter for j in all_letter[all_letter.find(i)+1:]]
list_num_three = [ i + j + k for i in all_letter
for j in all_letter[all_letter.find(i)+1:]
for k in all_letter[all_letter.find(j)+1:]]
list_num_four = [ i + j + k + l for i in all_letter
for j in all_letter[all_letter.find(i)+1:]
for k in all_letter[all_letter.find(j)+1:]
for l in all_letter[all_letter.find(k)+1:]]
list_num_five = [ i + j + k + l + m for i in all_letter
for j in all_letter[all_letter.find(i)+1:]
for k in all_letter[all_letter.find(j)+1:]
for l in all_letter[all_letter.find(k)+1:]
for m in all_letter[all_letter.find(l)+1:]]
list_num_six = [ i + j + k + l + m + n for i in all_letter
for j in all_letter[all_letter.find(i)+1:]
for k in all_letter[all_letter.find(j)+1:]
for l in all_letter[all_letter.find(k)+1:]
for m in all_letter[all_letter.find(l)+1:]
for n in all_letter[all_letter.find(m)+1:]
]
for key,value in enumerate(list_num_one + list_num_two + list_num_three + list_num_four + list_num_five + list_num_six):
result.setdefault(key+1,value)
return result
my_dict = gen_dict()
value_to_get = 'abcdef'
for key,value in my_dict.iteritems():
if value == value_to_get:
print key
结果:83682
即abcdef在字典中的编码。
希望本文所述对大家的Python程序设计有所帮助。


猜你喜欢
- 追本溯源,从使用开始首先看一下我们通常是如何使用微软自带的认证,一般在Startup里面配置我们所需的依赖认证服务,这里通过JWT的认证方式
- PHP将ppt转成图片查看PHP安装COM组件1、如php版本>5.3.15,需要保证ext文件夹下有php_com_dotnet.d
- 本文介绍用python实现的搜索本地文本文件内容的小程序。从而学习Python I/O方面的知识。代码如下:import os#根据文件扩展
- 清除日志: DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT
- 比较说明1、break和continue是python两个关键字2、break和continue只能用在循环中3、break是终止循环的执行
- 本文用到的文件的下载地址百度网盘链接: https://pan.baidu.com/s/1tmpdEfAZKff5TOMAitUXqQ提取码
- 对于python语言的True和False我们并不陌生了,在学习的过程中常会遇到这样的返回值,那么True真和False假的具体含义是什么?
- 一.背景一道ctf题,通过破解2048游戏获得flag游戏的规则很简单,需要控制所有方块向同一个方向运动,两个相同数字方块撞在一起之后合并成
- 非常不错,大家可以自己应用下。<% '//数据处理部分 dim Content,Num,I,st
- 本篇文章来介绍一道非常常见的面试题,到底有多常见呢?可能很多面试的开场白就是由此开始的。那就是 new 和 make 这两个内置函数的区别。
- 传统的机器学习任务从开始到建模的一般流程是:获取数据 -> 数据预处理 -> 训练建模 -> 模型评估 -> 预测,
- 在并发编程中,我们需要处理多个线程同时对共享资源的访问问题。如果不加控制地同时访问共享资源,就会导致竞争条件(Race Condition)
- 在python 开发web程序时,需要调用第三方的相关接口,在调用时,需要对请求进行签名。需要用到unix时间戳。 在python里,在网上
- 代码如下:Create trigger tri_wk_CSVHead_History on wk_CSVHead_History --声明
- 1、使用while循环实现输出2 - 3 + 4 - 5 + 6 ... + 100的和#方法一#从2开始计算i = 2#定义一个变量用于保
- 前提官网上提供了 Mac 和 Windows 上的安装包和 Linux 上安装需要的源码。下载地址如下:https://www.python
- 本文实例讲述了ThinkPHP中自定义错误页面和提示页面的方法。分享给大家供大家参考。具体实现方法如下:在ThinkPHP中有两个方法时提示
- 本文实例讲述了JavaScript获取中英文混合字符串长度的方法。分享给大家供大家参考,具体如下:JavaScript获取中英文混合字符串的
- 介绍毫无疑问,任何一个试图使用 CSS 的网页设计师和开发人员都会发现不同的浏览器要求不同的样式声明。这些烦恼归咎于各浏览器及其各版本不同程
- 在windows中罗技K380可以安装Logitech Options来实现这个Fn锁定功能。在linux中如何实现Logitech Opt