前提・実現したいこと
pythonの辞書型で特定の番号のキーと要素を出力しようとしています。
リストの場合は、以下のようにスライシングが可能ですが、
辞書ではキーを指定して要素を出力するのが一般的であるため、
スライシングを用いた方法がみつかりませんでした。
python
1a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2a1 = a[2:4] # 2番目から3番目: [2, 3] 3a2 = a[2:] # 2番目から最後: [2, 3, 4, 5, 6, 7, 8, 9] 4a3 = a[:3] # 最初から3番目: [0, 1, 2, 3]
発生している問題・エラーメッセージ
Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'slice'
該当のソースコード
python
1>>> dict = { 'a' : ['apple', 'assimulation'], 'b': ['banana', 'bag'], 'c':['cap', 'cat']} 2>>> dict[:1]
ほしい出力
{ 'a' : ['apple', 'assimulation'], 'b': ['banana', 'bag']}
補足情報(FW/ツールのバージョンなど)
python3.6
dict[:2]の間違いでしょうか?あと「特定の番号のキー」ですが、キーと番号の紐付けはどうするのでしょうか?登録順?アルファベット順?など。

dict[:1]としたのは、0番目から始まると考えたからです。キーと番号の紐付けは登録順で前から取得したいです。
dict[:1] だと 'a' しか取り出さないのでは?(listの方で a[:4] → [0, 1, 2, 3] と書いているのに‥)

辞書型ではキーと要素でセットなので、「'a' : ['apple', 'assimulation']」全体で1番目と考えていました。リストの方は修正いたします。申し訳ございません。
いや、dict[:1] だと「'a' : ['apple', 'assimulation']」しか取り出さないのでは?という質問ですよ。(省略して'a'と書きました)「'a' : ['apple', 'assimulation']」と「'b': ['banana', 'bag']」を取り出すのであれば dict[:2] じゃないの?ってことです。

0番目を'a' : ['apple', 'assimulation']、1番目を'b': ['banana', 'bag']としたらdict[:1]ということが言いたかったのですが、複雑な説明になってしまいました。
で、結局直さないんですね。

a3 = a[:3] # 最初から3番目: [0, 1, 2, 3]の方は修正いたしました。
なんで合ってる方を修正するかな‥。a[:3] が [0, 1, 2, 3] になりますか?

回答2件
あなたの回答
tips
プレビュー