python字典序问题实例
本文实例讲述了python字典序问题,分享给大家供大家参考。具体如下:
问题描述:
将字母从左向右的次序与字母表中的次序相同,且每个字符最大出现一次..例如:a,b,ab,bc,xyz等都是升序的字符串.现对字母表A产生的所有长度不超过6的升序字符串按照字典充排列并编码如下:
1
2
..
26
27
28
...
a
b
..
z
ab
ac
..
实现代码如下:
importstring
all_letter=string.ascii_lowercase
defgen_dict():
result={}
list_num_one=[a_letterfora_letterinall_letter]
list_num_two=[i+jforiinall_letterforjinall_letter[all_letter.find(i)+1:]]
list_num_three=[i+j+kforiinall_letter
forjinall_letter[all_letter.find(i)+1:]
forkinall_letter[all_letter.find(j)+1:]]
list_num_four=[i+j+k+lforiinall_letter
forjinall_letter[all_letter.find(i)+1:]
forkinall_letter[all_letter.find(j)+1:]
forlinall_letter[all_letter.find(k)+1:]]
list_num_five=[i+j+k+l+mforiinall_letter
forjinall_letter[all_letter.find(i)+1:]
forkinall_letter[all_letter.find(j)+1:]
forlinall_letter[all_letter.find(k)+1:]
forminall_letter[all_letter.find(l)+1:]]
list_num_six=[i+j+k+l+m+nforiinall_letter
forjinall_letter[all_letter.find(i)+1:]
forkinall_letter[all_letter.find(j)+1:]
forlinall_letter[all_letter.find(k)+1:]
forminall_letter[all_letter.find(l)+1:]
forninall_letter[all_letter.find(m)+1:]
]
forkey,valueinenumerate(list_num_one+list_num_two+list_num_three+list_num_four+list_num_five+list_num_six):
result.setdefault(key+1,value)
returnresult
my_dict=gen_dict()
value_to_get='abcdef'
forkey,valueinmy_dict.iteritems():
ifvalue==value_to_get:
printkey
结果:83682
即abcdef在字典中的编码。
希望本文所述对大家的Python程序设计有所帮助。