我有一个大字典,每个值本身都是一个很大的列表。
我必须浏览每个值并删除不遵循此模式的成员:
“每个小于前一个成员的成员应该小于下一个成员,或者如果成员大于前一个成员,那么它也应该大于下一个成员。”
这就是我的尝试:
Nodes = {1:[2,...,3],..., 2:[3,...5]} # a short example of the big dict
for key in Nodes.keys():
for i in range(1, len(Nodes[key])-1):
if Nodes[key][i-1] < Nodes [key][i] < Nodes[key][i+1] or Nodes[key][i-1] > Nodes [key][i] > Nodes[key][i+1]:
del Nodes[key][i]
这就是我得到的:
Traceback (most recent call last):
if Nodes[key][i-1] < Nodes [key][i] < Nodes[key][i+1] or Nodes[key][i-1] > Nodes [key][i] > Nodes[key][i+1]:
IndexError: list index out of range
我可以预测的一件事是操作员立即删除列表成员然后列表混乱,因为当我试图通过打印列表成员而不是删除它来检查时,代码工作。
答案 0 :(得分:0)
我可以预测的一件事是运营商删除了列表成员 然后,名单就会混乱,因为当我试图检查这个时 通过打印列表成员而不是删除它,代码可以正常工作。
你是对的。正如@Daniel所说,“不要修改你正在迭代的列表。”
您可以创建一个新列表,将所有有效值附加到新列表,并在该新列表的dict中指定键。
public class MyWindow extends Window{
private final Panel panel;
private final TextField textField;
private TextArea textArea;
private String value;
public MyWindow(String title){
this.value = value;
setHeading("Example");
initComponents();
}
private void initComponents(){
panel = new Panel(new Layout());
textField = new TextField();
textArea = new TextArea();
textArea.setValue(value);
textArea.setToolTip("tooltip");
// initializing any components and settings of these components
}
}