1

例如,如果

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

我只想返回'a','b'

我试过了:

for key in a:

    return key[0]

但它只返回'a'

是否有一种不使用 lambda 或计数器或类似的东西(这是 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

据我所知,您想遍历字典的键。尝试

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