对于元组列表中的元素,返回元组中的其他元素

时间:2016-04-15 04:21:25

标签: python list for-loop tuples

下面是我搜索名为pair的元组列表的函数的代码。列表中的每个元组由两个元素组成。

函数中给出的元素(称为item)可以位于元组的0或1位置,但列表中的所有元组只包含2个元素。

pairs = [('a','b'),('c','d'),('e','f'),('c','a')]

def connections(pairs, item):
    output = ''
    for j in pairs:
        if item in j:
            output = output + str(j)
    return (output)

现在,此代码将拉出包含其中项目的整个元组。

我想将此代码更改为仅返回元组中的其他元素,并将其作为字符串而不是元组返回。

3 个答案:

答案 0 :(得分:6)

这应该做你想要的:

def connection(pairs, item):
    return ''.join([p[1-p.index(item)] for p in pairs if item in p])

以下是一些示例输出:

>>> connection([('a','b'),('c','d'),('e','f'),('c','a')], 'a')
'bc'

答案 1 :(得分:0)

不是检查成员资格,而是检查是否相等。

def connections(pairs, item):
    output = ''
    for j in pairs:
        if item == j[0]:
            output += j[1]
        elif item == j[1]:
            output += j[0]
    return output

请注意,我已将串联简化为扩充分配,并删除了不必要的str()调用,因为它们已经是字符串。或者你可以这样做:

def connections(pairs, item):
    return ''.join(j[0] if item==j[1] else j[1] if item==j[0] else '' for j in pairs)

答案 2 :(得分:0)

pairs = [('a','b'),('c','d'),('e','f'),('c','a')]

def connections(pairs, item):
    output = ''
    for j in pairs:
        if item in j:
            index = 1-j.index(item)
            output = output + str(j[index])
    return (output)

print(connections(pairs, 'c'))

输出:

da