1

たとえば、

a = {('a','b','c'):2, ('b','c','d'):3}

のみ返品したい'a','b'

私は試した:

for key in a:

    return key[0]

しかし、それは返されただけ'a'です。

ラムダやカウンターなどを使用せずに最初の要素を見つける適切な方法はありますか (これは Python の基本的なコースです)。したがって、他の入力プログラムはありません。

4

3 に答える 3

3

関数 (したがってforループ) は、ヒットするとすぐに終了しますreturn。値をリストに保存してから、それを返す必要があります。何かのようなもの:

def getFirstElems(dic):
    firstElems = []
    for key in dic:
        firstElems.append(key[0])
    return firstElems

次に、その関数を次のように実行すると:

a = {('a','b','c'):2, ('b','c','d'):3}
elem1, elem2 = getFirstElems(a)
print "elem1:", elem1
print "elem2:", elem2

次の出力が得られます。

elem1: a
elem2: b
于 2012-11-30T03:52:54.027 に答える
2

このようなものが欲しいですか

In [4]: a = {('a','b','c'):2, ('b','c','d'):3}

In [5]: [key[0] for key in a.keys()]
Out[5]: ['a', 'b']

コードの問題はreturnステートメントです...返す前にすべての結果を保持する必要があります...

使用できるたびに個々の要素が必要な場合generators

In [19]: def mygenerator():
   ....:     a = {('a','b','c'):2, ('b','c','d'):3}
   ....:     for k in a.keys():
   ....:         yield k[0]
   ....:

In [20]: mg = mygenerator()

In [21]: print(mg)
<generator object mygenerator at 0x035FA148>

In [22]: for i in mg:
   ....:     print i
   ....:
a
b
于 2012-11-30T03:54:51.687 に答える
-1

私が言えることから、dictのキーをループしたいと思います。試す

for k in a.keys():
于 2012-11-30T03:53:49.683 に答える