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が必要です。どうも
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が必要です。どうも
そのようなリストから最初の要素にアクセスします。
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]
>>> [next(iter(d)) for d in a]
[43, 3, 36, 2, 23]
dictのリストがあるので、keys
メソッドはdictのキーを提供します。また、それらはすべて1つのエントリしかないため、[0]
それを参照するために使用します。
>>> [d.keys()[0] for d in a]
[43, 3, 36, 2, 23]
私があなたの他の質問へのコメントで答えたように、これはあなたが望むものです:
試す:
for b in a:
print b.keys()[0]
これによりキーが抽出されるため、最終的に次のように出力されます:43、3、36、2、23。代わりに値(123、103、36、102、100など)が必要な場合は、を使用しますb.values()[0]
。
結果のリストに[36]があり、アイテムにアクセスしたい場合は、要素0に添え字を付けるだけです。
[0]
つまり、リストの最初の(そして唯一の)アイテムに到達するために[36]得た式に追加するだけです。
だから、あなたの場合:
print a[2].keys()[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)]