背景: 素敵な形式で印刷するために繰り返し処理しているハッシュがあります。
サンプルハッシュ
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 残りのすべてのコードは実行されず、最後の要素の 2 番目の要素をループします。 vw_owner_product_bls_only をハッシュしてから実行を開始します。ただし、この要素では、内側のループの後のすべてのコードが実行され、目的の出力が得られます。
では、最終的なハッシュの最初の要素に対してのみ残りのコードが実行されないのはなぜでしょうか? ハッシュの値に要素が 1 つしかないためですか?