对于dict的以下定义:
resPanel.setLayout(new BoxLayout(resPanel, BoxLayout.Y_AXIS));
mainPanel.setLayout(new MigLayout("", "[][grow][grow][]", "[][][][grow]"));
mainPanel.add(new JLabel("Class expression"), "wrap");
mainPanel.add(owlDescriptionEditor, "growx,span 3");
mainPanel.add(calcButton, "wrap");
mainPanel.add(new JLabel("Definitions found"), "span 2");
mainPanel.add(new JLabel("Target signature"), "span 2,wrap");
JScrollPane jsp = new JScrollPane(resPanel);
mainPanel.add(jsp, "growy, growx, span 2");
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
mainPanel.add(new JScrollPane(deltaList), "growx,growy,span 2");
我基本上需要检查数据中是否存在给定密钥,如果存在,则必须打印与密钥关联的值。
示例:
输入:static void updateList(JPanel panel, Collection<OWLClassExpression> list) {
panel.removeAll();
for (int i = 0; i < 3; i++) {
for (OWLClassExpression p : list) {
String name = ((OWLNamedObject) p).getIRI().getShortForm();
JEditorPane jep = new JEditorPane("text/html", name+"QWQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ");
jep.setPreferredSize(new Dimension(200,20));
jep.setEditable(false);
jep.setOpaque(false);
panel.add(jep);
}
}
panel.add( Box.createVerticalStrut(400) );
}
输出:data={
'key_1':1,
'key_2':2,
'key_3':[
{
'key_4':[4,5],
'key_5':[6,7],
'key_6':8
},
{
'key_4':[9,10],
'key_5':[11,12],
'key_6':13
}
],
'key_7':14
}
输入:key_5
输出:([6,7],[11,12])
我写的代码:
key_8
我不确定在此代码中将“DNE”的条件放在何处。我可以得到一些帮助吗?
答案 0 :(得分:0)
那怎么样?这是一个简单的递归...
from sys import exit
def check(d, key): # d means dictionary
for k in d:
if k == key:
print(d[key])
elif (type(d[k]) == list):
for e in d[k]:
if (type(e) == dict):
check(e, key)