web-dev-qa-db-ja.com

In Python辞書の部分ビューを取得する方法?

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]}

ありがとう

24
hernanavella

ちょっと欲望を歪めたが、これを使用してそれを得ることができます

dict(islice(mydict.iteritems(), 0, 2))

または短い辞書用

# Python 2.x
dict(mydict.items()[0:2])

# Python 3.x
dict(list(mydict.items())[0:2])
26
Retard
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つになるかはわかりません。

4
BrenBarn

私はこの質問が3年前であることを知っていますが、ここではPython 3.*

[print(v) for i, v in enumerate(my_dict.items()) if i < n]

辞書の最初のn要素を出力しますmy_dict

3
Neb

編集:

in Python 3.x:ライブラリを使用せずに、この方法でそれを行うことができます。使用方法:

.items()

値を持つ辞書キーのリストを返します。

リストに変換する必要があります。そうしないと、エラーが発生します'my_dict'オブジェクトは添字付け不可。次に、辞書に変換します。これで、角括弧でスライスする準備ができました。

dict(list(my_dict.items())[:3])
2
Michal

Python 3 dict理解:@Nebのワンアップソリューション

{k: v for i, (k, v) in enumerate(my_dict.items()) if i < n}

印刷ではなく辞書を返します

2

ドキュメント から:

CPython実装の詳細:キーと値は、ランダムではなく、Python実装によって異なり、辞書の挿入と削除の履歴に依存します。

私はせいぜい他のPython実装(PyPy、IronPythonなど)をいじくり回しただけなので、これがすべての場合Python実装ですが、dict/hashmap/hash/etcの一般的な考え方は、キーが順序付けられていないということです。

つまり、 OrderedDictライブラリのcollections を使用できます。 OrderedDictsは、入力したキーの順序を記憶しています。

1
user554546

キーが何らかの方法でソート可能な場合、これを行うことができます:

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]は、各キー/値ペアのキーです。

1
heltonbiker

pandasデータフレームでこの問題を解決したい人向け。辞書mydictをデータフレームに挿入し、回転させて、最初の数行を取得するだけです。

pd.DataFrame(mydict, index=[0]).T.head()

0 hi0 1 hi1 2 hi2 3 hi3 4 hi4

1
Wassadamo