【发布时间】:2020-04-01 16:33:48
【问题描述】:
*** 更新 **** 额外的字母“A”是个问题。我在这里重新表述一下。也许更清楚? 我必须使用具有可变长度列表作为其值的字典来替换列表中的值。例如:
variants = {C:["cat", "can", "car"], D:["do","die"], Z:["zen", "zoo"]}
还有一个清单:
Letters = ["C", "D", "Z"]
我想要这样的列表输出
PotentialWords = [["cat", "do", "zen"], ["can", "die", "zoo"],["car", "do", "zen"], ["car", "die", "zoo"]
所有元素在每一步都得到更新,但如果 索引超过,则 更新被保留,我们得到所有变体相互交叉。
到目前为止我所拥有的是:
max_len = max([len(words) for words in variants.values()])
for i in range(max_len):
var = []
for let in Letters:
if let not in variants.keys():
var.append(let)
else:
if i < len(variants[let]):
var.append(variants[let][i])
elif i > len(variants[let]):
var.append(let)
这给出了错误的输出:
OutputWords = [["cat", "do", "zen"], ["can", "die", "zoo"], ["car"]]
您的所有帮助将不胜感激 :) * 更新* 感谢评论者,此问题已更新以更清晰。以前的输入是
Letters = ["C", "D", "Z", "A"]
然后输出
[["cat", "do", "zen", "A"], ["can", "die", "zoo","A"],["car", "A"]]
** 请只看上面的输入/输出
【问题讨论】:
-
您能否进一步解释在给定输入的情况下获取输出的公式?为什么
"A"在那里?为什么输出长度为 4?为什么不是第三个["car", "D", "Z", "A"]? -
感谢您的回复! “A”是必需的,因为有些字母会有变体,而有些则没有。那些没有的,将需要保留。第三个不是
["car", "D", "Z", "A"],因为嵌套了elif循环。如果我可以在最后两行做else: var.append(let),那么我们就会得到那个输出。但这仍然不是我们想要的。 :( -
这段代码的用途尚不清楚。为什么要将字母添加到字典中?
-
除了@blueteeth 的评论:您想选择字典中给出的列表的第 i 个元素。考虑到
i=2,从第一个列表中选择car,并且由于其他两个列表都不包含那么多元素,因此在其他列表上“溢出”。我想,我到此为止。但是,我不明白如何从字母列表中选择A。从我的角度来看,i=2你应该从这个列表中选择Z。 -
我刚刚添加了对代码的编辑。请问现在可以看吗?我为之前的混乱道歉。我已经删除了A,将单独处理。非常感谢所有的澄清和理解。是的,问题出在“溢出”上。
标签: python python-3.x list dictionary variable-length-array