Python 2.7 如何在Python中打印复杂的字典数据类型?

Python 2.7 如何在Python中打印复杂的字典数据类型?,python-2.7,dictionary,printing,Python 2.7,Dictionary,Printing,我想打印sparql查询的结果,该查询提供以下字典数据类型: {u'head': {u'vars': [u'synonym', u'label', u'gloss']}, u'results': {u'bindings': [{u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-05256358-n-1'}, u'label': {u'type': u

我想打印sparql查询的结果,该查询提供以下字典数据类型:

{u'head': {u'vars': [u'synonym', u'label', u'gloss']}, u'results': {u'bindings': [{u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-05256358-n-1'}, u'label': {u'type': u'literal', u'value': u'risco'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-08593924-n-2'}, u'label': {u'type': u'literal', u'value': u'risco'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-08593924-n-1'}, u'label': {u'type': u'literal', u'value': u'linha'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-08593924-n-3'}, u'label': {u'type': u'literal', u'value': u'tra\xe7o'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-04683136-n-1'}, u'label': {u'type': u'literal', u'value': u'risco'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-04683136-n-2'}, u'label': {u'type': u'literal', u'value': u'listra'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-14541852-n-3'}, u'label': {u'type': u'literal', u'value': u'perigo'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-14541852-n-2'}, u'label': {u'type': u'literal', u'value': u'amea\xe7a'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-14541852-n-1'}, u'label': {u'type': u'literal', u'value': u'risco'}}, {u'gloss': {u'type': u'literal', u'value': u'um risco empreendido sem levar em conta poss\xedveis perdas ou danos'}, u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-00802238-n-2'}, u'label': {u'type': u'literal', u'value': u'risco'}}, {u'gloss': {u'type': u'literal', u'value': u'um risco empreendido sem levar em conta poss\xedveis perdas ou danos'}, u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-00802238-n-1'}, u'label': {u'type': u'literal', u'value': u'perigo'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-14541044-n-2'}, u'label': {u'type': u'literal', u'value': u'amea\xe7a'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-14541044-n-1'}, u'label': {u'type': u'literal', u'value': u'risco'}}, {u'synonym': {u'type': u'uri', u'value': u'http://arademaker.github.com/wn30-br/instances/wordsense-14541044-n-3'}, u'label': {u'type': u'literal', u'value': u'perigo'}}]}}
我正在尝试打印它,但收到以下错误消息:

0 http://arademaker.github.com/wn30-br/instances/wordsense-05256358-n-1 |--| risco |--|

Traceback (most recent call last):

File "/Users/marceloschiessl/RDF_text_project/tese/testDevelop.py", line 70, in <module>

print result[var]["value"],"|--|",

KeyError: u'gloss'
有人能帮我吗


TIA

在Python中,您只需通过

if key in dict
话虽如此,根据dict中找不到键
'gloss'
时您想做什么,您可以执行以下任一操作:

这将打印除“光泽”以外的所有其他键的值。:

for i,result in enumerate(result_set["results"]["bindings"]) :
    print i, 
    for var in result_set["head"]["vars"]:
        if var != 'gloss':
            print result[var]["value"],"|--|",
    print
这只是打印键
'gloss'

for i,result in enumerate(result_set["results"]["bindings"]) :
    print i, 
    for var in result_set["head"]["vars"]:
        if 'gloss' in result: # Checks whether you have gloss key in the result dict
            print result[var]["value"],"|--|",
    print

我希望这就是你想要的。

@sk11举了一些例子,让我知道该怎么做!这比我想象的要简单,看:

for i,result in enumerate(result_set["results"]["bindings"]) :
    print i,
    for var in result_set["head"]["vars"] :
        if var in result:#to test whether all variables exists or not
            print result[var]["value"],": ",
    print

干杯,

谢谢@sk11!通过阅读你的例子,我可以意识到我必须做什么。实际上,我只想打印所有键的值,带或不带“gloss”。现在您知道如何继续。很高兴它有帮助!
for i,result in enumerate(result_set["results"]["bindings"]) :
    print i,
    for var in result_set["head"]["vars"] :
        if var in result:#to test whether all variables exists or not
            print result[var]["value"],": ",
    print