1. ホーム
  2. python

[解決済み] dict_keys' オブジェクトを取得すると、リストへのキャストにもかかわらずインデックスがサポートされない

2022-02-16 03:15:23

質問

Python 3 を使っていますが、リストにキャストしているにもかかわらず、プログラムを実行することができないようです。

これは関数を呼び出しているところです。

path = euleriancycle(edges)

そして、ここでkeysメソッドを使っています。

def euleriancycle(e):
    currentnode = list[e.keys()[0]]
    path = [currentnode]

listにタイプキャストせずに実行しようとしたら、このようなエラーが発生しました。このサイトや類似のクエリについて調べた後、提案された解決策に従ってlistにタイプキャストしてみましたが、無駄でした。同じエラーが出ました。

これがエラーの軌跡です。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-56-356b905111a9> in <module>()
     45             edges[int(edge[0])] = [int(edge[1])]
     46 
---> 47 path = euleriancycle(edges)
     48 print(path)

<ipython-input-56-356b905111a9> in euleriancycle(e)
      1 def euleriancycle(e):
----> 2     currentnode = list[e.keys()[0]]
      3     path = [currentnode]
      4 
      5     while true:

TypeError: 'dict_keys' object does not support indexing

解決方法は?

その dict_keys オブジェクトは、セットと同様、インデックスを作成することはできません。

この代わりに

list[e.keys()[0]]

次に近いのは、これでしょう。

list(e)[0]

Python は dict からどのキーが返されるかを保証しませんので、自分で順序付けをしたいかもしれません。