1

a = [{43:123}, {3:103}, {36:103}, {2:102}, {23:100}]

各キーがidであり、valueがポイントの数を意味する場合、どうすればそこからidを抽出できますか。私はこれを使ってみました:

for b in a: 
     print a[i].keys()
     i+=1

Pythonの結果はリストですが、整数型が必要です。たとえば 、print a[2].keys()結果[36]と私はintである36が必要です。どうも

4

6 に答える 6

3

そのようなリストから最初の要素にアクセスします。

a[2].keys()[0]

また

next(a[2].iterkeys())

両方ともintを返し36ます。

すべてのキーのリストを取得するには:

[next(d.iterkeys()) for d in a]

戻る[43, 3, 36, 2, 23]

たぶん、あなたはあなたのdictのリストを単純なdictに変換するべきです:

d = {}
for x in a:
    d.update(x) 

取得、順序は保存されていませんが、{2: 102, 3: 103, 23: 100, 36: 103, 43: 123}簡単d.keys()に取得してすべてのキーを取得できます。[3, 2, 43, 36, 23]

于 2012-06-06T14:46:31.560 に答える
2
>>> [next(iter(d)) for d in a]
[43, 3, 36, 2, 23]
于 2012-06-06T14:52:49.143 に答える
1

dictのリストがあるので、keysメソッドはdictのキーを提供します。また、それらはすべて1つのエントリしかないため、[0]それを参照するために使用します。

>>> [d.keys()[0] for d in a]
[43, 3, 36, 2, 23]
于 2012-06-06T14:47:48.163 に答える
0

私があなたの他の質問へのコメントで答えたように、これはあなたが望むものです:

試す:

for b in a: 
    print b.keys()[0]   

これによりキーが抽出されるため、最終的に次のように出力されます:43、3、36、2、23。代わりに値(123、103、36、102、100など)が必要な場合は、を使用しますb.values()[0]

于 2012-06-06T14:47:10.527 に答える
0

結果のリストに[36]があり、アイテムにアクセスしたい場合は、要素0に添え字を付けるだけです。

[0]つまり、リストの最初の(そして唯一の)アイテムに到達するために[36]得た式に追加するだけです。

だから、あなたの場合:

print a[2].keys()[0]
于 2012-06-06T14:47:24.797 に答える
0

これを試して:

def getKeyAtIndex(a, idx):
    return a[idx].keys()[0]

そしてそれをこのように呼んでください:

print getKeyAtIndex(a, 2)
> 36

補足として、これは同じデータ構造で投稿した2番目の質問です。辞書のリストです。各辞書は単一の値を持つ単一のキーを保持しています。それはあまり意味がありません。この場合、辞書を使用しても何も得られません。たぶん、単一の辞書がより良い考えでしょうか?このような:

{43:123, 3:103, 36:103, 2:102, 23:100}

それともタプルのリストですか?このような:

[(43, 123), (3, 103), (36, 103), (2, 102), (23, 100)]
于 2012-06-06T14:50:06.797 に答える