Python類似のpandas df.tail()/df.head()
。]のdict
の部分ビューを取得することは可能ですか?非常に長いdict
で、dict
の要素(開始、終了など)の一部を確認したいだけです。
dict.head(3) # To see the first 3 elements of the dictionary.
{[1,2], [2, 3], [3, 4]}
ありがとう
ちょっと欲望を歪めたが、これを使用してそれを得ることができます
dict(islice(mydict.iteritems(), 0, 2))
または短い辞書用
# Python 2.x
dict(mydict.items()[0:2])
# Python 3.x
dict(list(mydict.items())[0:2])
def glance(d):
return dict(itertools.islice(d.iteritems(), 3))
>>> x = {1:2, 3:4, 5:6, 7:8, 9:10, 11:12}
>>> glance(x)
{1: 2, 3: 4, 5: 6}
しかしながら:
>>> x['a'] = 2
>>> glance(x)
{1: 2, 3: 4, u'a': 2}
新しい要素を挿入すると、「最初の」3つの要素が予測不可能な方法で変更されたことに注意してください。これは、ディクテーションが順序付けられていないと人々が言うときの意味です。必要に応じて3つの要素を取得できますが、どの3つになるかはわかりません。
私はこの質問が3年前であることを知っていますが、ここではPython 3.*
:
[print(v) for i, v in enumerate(my_dict.items()) if i < n]
辞書の最初のn
要素を出力しますmy_dict
編集:
in Python 3.x:ライブラリを使用せずに、この方法でそれを行うことができます。使用方法:
.items()
値を持つ辞書キーのリストを返します。
リストに変換する必要があります。そうしないと、エラーが発生します'my_dict'オブジェクトは添字付け不可。次に、辞書に変換します。これで、角括弧でスライスする準備ができました。
dict(list(my_dict.items())[:3])
Python 3 dict理解:@Nebのワンアップソリューション
{k: v for i, (k, v) in enumerate(my_dict.items()) if i < n}
印刷ではなく辞書を返します
ドキュメント から:
CPython実装の詳細:キーと値は、ランダムではなく、Python実装によって異なり、辞書の挿入と削除の履歴に依存します。
私はせいぜい他のPython実装(PyPy、IronPythonなど)をいじくり回しただけなので、これがすべての場合Python実装ですが、dict/hashmap/hash/etcの一般的な考え方は、キーが順序付けられていないということです。
つまり、 OrderedDict
ライブラリのcollections
を使用できます。 OrderedDict
sは、入力したキーの順序を記憶しています。
キーが何らかの方法でソート可能な場合、これを行うことができます:
head = dict([(key, myDict[key]) for key in sorted(myDict.keys())[:3]])
多分:
head = dict(sorted(mydict.items(), key=lambda: x:x[0])[:3])
どこ x[0]
は、各キー/値ペアのキーです。
pandas
データフレームでこの問題を解決したい人向け。辞書mydict
をデータフレームに挿入し、回転させて、最初の数行を取得するだけです。
pd.DataFrame(mydict, index=[0]).T.head()
0 hi0 1 hi1 2 hi2 3 hi3 4 hi4