6

リストまたは dict が python に存在するかどうかを確認する最も簡単な方法は何ですか?

以下を使用していますが、これは機能していません。

if len(list) == 0:
    print "Im not here"

ありがとう、

4

8 に答える 8

10

try/except ブロックを使用できます。

try:
    #work with list
except NameError:
    print "list isn't defined"
于 2012-07-19T07:58:10.510 に答える
9

リストの場合:

if a_list:
    print "I'm not here"

同じことが辞書にも当てはまります:

if a_dict:
    print "I'm not here"
于 2012-07-19T08:00:01.357 に答える
6

存在しない変数を参照しようとすると、インタープリターはNameError. ただし、コード内の変数の存在に依存するのは安全ではありません (None などに初期化することをお勧めします)。時々私はこれを使用しました:

try:
    mylist
    print "I'm here"
except NameError:
    print "I'm not here"
于 2012-07-19T08:01:04.340 に答える
4

名前を付けることができる場合-明らかに「存在する」-「空でない」ことを確認するつもりだと思います...最もpythonicな方法はを使用することif varname:です。結果が常にTrue.

特定のインデックス/キーを使用したいだけの場合は、それを試して使用してください。

try:
    print someobj[5]
except (KeyError, IndexError) as e: # For dict, list|tuple
    print 'could not get it'
于 2012-07-19T07:56:18.863 に答える
2

例:

mylist=[1,2,3]
'mylist' in locals().keys()

またはこれを使用します:

mylist in locals().values()
于 2012-07-19T11:02:07.630 に答える
1

簡単なコンソール テスト:

>>> if len(b) == 0: print "Ups!"
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined

>>> try:
...     len(b)
... except Exception as e:
...     print e
... 
name 'b' is not defined

例は、リストに要素があるかどうかを確認する方法を示しています。

alist = [1,2,3]
if alist: print "I'm here!"

Output: I'm here!

さもないと:

alist = []
if not alist: print "Somebody here?"

Output: Somebody here?

リスト/タプルの存在/非存在を確認する必要がある場合、これが役立つかもしれません:

from types import ListType, TupleType
a_list = [1,2,3,4]
a_tuple = (1,2,3,4)

# for an existing/nonexisting list
# "a_list" in globals() check if "a_list" is defined (not undefined :p)

if "a_list" in globals() and type(a_list) is ListType: 
    print "I'm a list, therefore I am an existing list! :)"

# for an existing/nonexisting tuple
if "a_tuple" in globals() and type(a_tuple) is TupleType: 
    print "I'm a tuple, therefore I am an existing tuple! :)"

globals()で of を避ける必要がある場合は、おそらくこれを使用できます。

from types import ListType, TupleType
try:
    # for an existing/nonexisting list
    if type(ima_list) is ListType: 
        print "I'm a list, therefore I am an existing list! :)"

    # for an existing/nonexisting tuple
    if type(ima_tuple) is TupleType: 
        print "I'm a tuple, therefore I am an existing tuple! :)"
except Exception, e:
    print "%s" % e

Output:
    name 'ima_list' is not defined
    ---
    name 'ima_tuple' is not defined

参考文献: 8.15。types — 組み込み型の名前 — Python v2.7.3 ドキュメント https://docs.python.org/3/library/types.html

于 2012-08-28T16:58:40.387 に答える