Python Code用于检查列表和dicts的dict中是否存在特定键

时间:2018-05-09 16:57:11

标签: python list loops dictionary

对于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”的条件放在何处。我可以得到一些帮助吗?

1 个答案:

答案 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)