0

私は口述を持っています。キーは 0 から 60 までの数字です。これは分です。辞書の例は次のようになります。

{u'31': 1, u'2': 0, u'30': 1} 

キー (数字) を、すべてのキーの間にハイフンを含むタイムラインとして印刷したいと思います。すべてをカンマで区切ります。ハイフンの数は、辞書の各キーの数で示されます。

正味の結果は次のようになります。

-,-,0,-,-,-,-,-,-,-,-,-,-,1,1,-,-,-,-,-,-

(これは説明のためだけのものです。その間のハイフンの数は正しくありませんが、画像は得られました。これは、位置2(辞書のキー)に0(辞書の値)があり、位置30に値があることを意味します1)。

私はこのコードを持っています

for k, v in time_events.iteritems():
    print '-,'*int(k) + str(v)+',', 

しかし、これは

-,-,0,-,-,-,-,-,-,1,-,-,-,-,-,-,-1

30すべてのイベントを個別のタイムラインとして出力します (したがって、 との間に 30 個のハイフンがあります31) 。

私の推測では、最初に辞書をキーで並べ替えてから、現在のキーから前のキー番号を減算します。これにより、数字の間にまだ印刷されていないハイフンの残りの数が得られます。previous keyしかし、実際にforループ内にアクセスする方法は?

私の質問が理解できることを願っています。

4

1 に答える 1

2

これを行うことができます:

>>> dct={u'31': 1, u'2': 0, u'30': 1}
>>> ','.join(str(dct.get(str(i), '-')) for i in range(60))
'-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,1,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-'

dct.get(str(i), '-')基本的にはアクセスしてみますdct[str(i)]。存在しない場合は、2 番目のパラメーター (既定値) を返します。関連ドキュメントはこちらです。

于 2013-04-21T06:55:56.433 に答える