for循环中变量的问题

陈景伟-英语 陈小妞 2018-08-28 09:26:32
楼主想在一定数量(m1,m2,m3....,m17)的文本里找出能够涵盖字母'a','b','c','d','e','f','g','h','i','j','k','l','m','n'的最小数量文本数量及文本名称。
楼主是这样找的:
已知条件是
m=['m1','m2','m3','m4','m5','m6','m7','m8','m9','m10','m11','m12','m13','m14','m15','m16','m17']#这是总的文本及名称。
letter=['a','b','c','d','e','f','g','h','i','j','k','l','m','n'] #这是所给文本里出现的字母。
dictfl={1:['a','b','c','d','e'],2:["f","g","h","i"],3:['j','k','l','m','n']}#这是字母与在总文本中出现的频率次数
dictl1m={'a':'m1','b':'m2','c':'m13','d':'m4','e':'m5'} #这是字母出现频率是1时字母所在的文本。
dictl2m={'f':['m6','m7'],'g':['m5','m6'],'h':['m4','m3'],'i':['m8','m9']} #这是字母出现频率是2时字母所在的文本。
dictl3m={'j':['m1','m3','m4'],'k':['m10','m1','m2'],'l':['m11','m12','m13'],'m':['m14','m2','m3'],'n':['m15','m16','m17']} #这是字母出现频率是3时字母所在的文本。
frn=[1,2,3] #这是显示字母出现的频率,及最高频率。
楼主思路是这样的:1.先找出频率是1的字母所在的文本,并建立一个列表mlist1。2. 找出频率是2的字母所在的文本,如果1中不包括,就把它加入mlist1. 3. 按2步骤,找频率是3的字母所在文本,如果mlist1不包括,再把它加入。
具体步骤如下:
#step 1 找出:dictl1m中m的列表
mlist1=[]#做基础列表用。
for k,v in dictl1m.items():
if v not in mlist1:
mlist1.append(v)
print(mlist1)

#step 2:如果dictl2m中values中两个都不在mlist1中,则随机选一个加入。
for k,v in dictl2m.items():
if v[0] and v[1] not in mlist1:
if v[0] not in mlist1:
if v[1] not in mlist1:
mlist1.append(v[0])#v[0],v[1]结果不同。

#else:
#break #不能要,否则只能显示第一个符合条件的新增元素。
print(mlist1)

for k,v in dictl3m.items():
if v[0] and v[1] and v[2]not in mlist1:
if v[0] not in mlist1:
if v[1] not in mlist1:
if v[2] not in mlist1: #需要多加一个v[2]
mlist1.append(v[0])#v[0],v[1]结果不同。

print(mlist1)

我的问题是:frn=[1,2,3] 这里的频率及最高频率3,但是在整个程序中是不确定的。因为文本的数量和名称会变,所以字母出现的频率随之改变。有可能是像[1,3,4,8,19],[1,4,9,23,24,30]等等。所以,如果这样的话,我就不知道怎么写这一部分程序了。 希望各位前辈帮忙解决一下!!!
...全文
253 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
简明教程 2018-09-04
  • 打赏
  • 举报
回复

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧