假设我有一个(嵌套的)字典,如下所示(注意lists-values):
dic = {'level1':
{'level2':(1, 2),
'level3':
[
{'level4': (1, 2)},
{'level5': (1, 2)}
]
}
}
我正在寻找一种正确的方法来打印这本词典,我使用json
来完成此操作:
import json
print json.dumps(dic, indent=4)
{
"level1": {
"level2": [
1,
2
],
"level3": [
{
"level4": [
1,
2
]
},
{
"level5": [
1,
2
]
}
]
}
}
import yaml
print yaml.dump(dic)
level1:
level2: !!python/tuple [1, 2]
level3:
- level4: !!python/tuple [1, 2]
- level5: !!python/tuple [1, 2]
"level1"
|---"level2": 1, 2
|---"level3":
|---"level4": 1, 2
|---"level5": 1, 2
我相信上面的内容更容易阅读,而且可能有python库可以做到这一点。
这是根据activestate代码示例改编的。不能说它很漂亮,但可能会让你朝着正确的方向前进:
myDict = {'level1':
{'level2':(1, 2),
'level3':
[
{'level4': (1, 2)},
{'level5': (1, 2)},
],
'level6': [1,2,3],
'level7':{'level8': (1,2), 'level9': (1,2)}
}
}
def prettyPrint(dictionary, ident = '', braces=1):
for key, value in dictionary.iteritems():
if isinstance(value, dict):
print '%s%s%s%s' % (ident, braces*'[', key, braces*']')
prettyPrint(value, ident+' ', braces+1)
elif isinstance(value, list):
ndict=0
for v in value:
if isinstance(v, dict):
ndict += 1
if ndict:
print '%s%s' % (ident, key)
for e in value:
if isinstance(e, dict):
prettyPrint(e, ident+' ', braces+1)
else:
print ident+'%s : %s' %(key, e)
else:
print ident+'%s : %s' %(key, value)
else:
print ident+'%s : %s' %(key, value)
prettyPrint(myDict)
[level1]
level2 : (1, 2)
level3
level4 : (1, 2)
level5 : (1, 2)
level6 : [1, 2, 3]
[[level7]]
level8 : (1, 2)
level9 : (1, 2)
这是这个问题的后续问题。我需要prettyprint一个python dict(这样我可以直观地检查/修改它),并且我需要有json格式的输出(带双引号)。 模块pretty打印dict但使用单引号(而不是JSON!)。这是链接的其他问题/答案的主题。
问题内容: 如何在Python中打印深度约为4的字典?我尝试使用进行漂亮的打印,但是没有用: 我只是想为每个嵌套添加一个缩进(),以便获得如下内容: 等等 我怎样才能做到这一点? 问题答案: 我不确定您希望格式看起来如何,但是可以从这样的函数开始:
这是本字典 将此 它打印以下内容: 但我想让程序像这样打印: 我刚开始学字典,所以我不知道怎么做。
问题内容: 这只是我需要访问的一小部分JSON代码… 我在打印嵌套JSON值时遇到问题。如果我想打印“ fcttext”,我该怎么做?我已经尝试过了… 我究竟做错了什么?完整的JSON代码。 问题答案: 首先,您的json不正确,请使用jsonlint [1]检查json的格式是否正确。 将JSON重新格式化为以下格式, 使用以下代码进行解析, 我已经使用Google的GSON [2]库来解析JS
问题内容: 考虑以下代码段: 控制台输出: 可选([1、4、9、16、25] [75、43、103、87、12] 为什么字典中有“ Optional”? 问题答案: 为了安全起见,Swift字典正在返回可选内容。如果您尝试访问一个不存在的密钥,那将使您无用。 您还可以使用下标语法从字典中检索特定键的值。因为可以请求不存在任何值的键,所以字典的下标返回字典值类型的可选值。如果字典包含所请求键的值,则
问题内容: 我想打印一个特定的Python字典键: 现在我可以检查是否可以,但是我想做的是打印密钥的名称。当然可以使用,但是我不想列出 所有 键,而只列出一个特定的键。例如,我期望这样的事情(用伪代码): 有什么方法可以打印键名? 编辑: 好的,非常感谢你们的反应!:)我意识到我的问题没有很好地表述和琐碎。我只是感到困惑,因为我意识到key_name是两个不同的东西,我认为从字典上下文中打印出来是