背景:我有一个哈希,我正在迭代它以一种很好的格式打印它。
样本哈希
Final = {
'sf_market_flash_subscribers': [
{'38': './BLMetricsSql.sql'}
],
'vw_owner_product_bls_only': [
{'31': './BLMetricsSql.sql'},
{'39': './BLMetricsSql.sql'},
{'62': './BLMetricsSql.sql'},
{'64': './BLMetricsSql.sql'}
]
}
我的代码
def printFinal(final):
for key, value in final.iteritems():
print key
print value
line_num=""
path=""
uniqueTables=[]
for line_and_path in value:
path=line_and_path.values()[0]
uniqueTables.append(path)
print uniqueTables
print uniqueTables
uniqueTables=list(set(uniqueTables))
print uniqueTables
for unique_path in uniqueTables:
print unique_path
for line_and_path in value:
if line_and_path.values()[0]==unique_path.rstrip():
line_num = line_and_path.keys()[0]
print line_num
上述代码的输出
sf_market_flash_subscribers
[{'38': './BLMetricsSql.sql'}]
['./BLMetricsSql.sql']
vw_owner_product_bls_only
[{'31': './BLMetricsSql.sql'}, {'39': './BLMetricsSql.sql'}, {'62': './BLMetricsSql.sql'}, {'64': './BLMetricsSql.sql'}]
['./BLMetricsSql.sql']
['./BLMetricsSql.sql', './BLMetricsSql.sql']
['./BLMetricsSql.sql', './BLMetricsSql.sql', './BLMetricsSql.sql']
['./BLMetricsSql.sql', './BLMetricsSql.sql', './BLMetricsSql.sql', './BLMetricsSql.sql']
['./BLMetricsSql.sql', './BLMetricsSql.sql', './BLMetricsSql.sql', './BLMetricsSql.sql']
['./BLMetricsSql.sql']
./BLMetricsSql.sql
31
39
62
64
查看前 4 行输出
循环分别在第 1 行和第 2 行打印键和值然后它打印循环内唯一表的当前状态之后,BOOM 所有剩余的代码都没有被执行,它继续循环最后的第二个元素哈希 vw_owner_product_bls_only 然后开始执行它。但是,对于这个元素,内部循环之后的所有代码都被执行,我得到了所需的输出。
那么,为什么其余的代码不仅仅针对最终哈希中的第一个元素运行呢?是因为散列中的值只有一个元素吗?