繁体   English   中英

Python在两个单独的列表中获取值

[英]Python getting values in two separate lists

我有一个功能返回两个列表:

def get_ticket_queue()
    ...bunch of stuff
    return ticket_id_list,ticket_description_list

它们都返回相同数量的值,它们从XML数据中获取值。 一个抓住ticket_id,一个抓住ticket_summary

这是我目前使用它来确定它是好票还是坏票的方式:

ticket_queue = get_ticket_queue()

for ticket_id in ticket_queue[0]:
    bad_ticket_id = next_steps(ticket_id) #next_steps is a separate function that performs some other work on the values.

    if "good" not in bad_ticket_id:
        print (bad_ticket_id)
    else:
        print "good:

这涵盖了从第一个列表(ticket_id_list)中获取和使用ticket_id。 但是,当我打印bad_ticket_id时,我还需要获取ticket_description_list中的相应索引值,以便可以打印ticket_summary。

我希望这是有道理的。 也许有更好/更简便的方法可以做到这一点,但我不确定那是什么。 简而言之,我试图找出如何从两个不同的列表中的相同索引处打印两个值。

任何帮助是极大的赞赏。

解决方案1:

这是enumerate()迭代器的典型用例。 这个想法是对list1进行迭代,并从list2获取相应的元素:

list1 = ['a','b','c','d','e']
list2 = ['x','y','z','t','u']

for i, e in enumerate(list1):
    print(e)            # This is your list1 element
    print(list2[i])     # This is the corresponding list2 element

在您的特定情况下,您的list1ticket_queue[0] ,而list2ticket_queue[1]

解决方案2:

让我们重现您的功能:

def lists():
    return list1,list2

您可以将函数返回的两个列表一起zip()在一起,并同时在两个列表上进行迭代。 就像解决方案1一样,它也是一个迭代器,因此对内存友好。

for one, two in zip(*lists()):
    print(one)
    print(two)

让我们将其完全适合您的代码:

ticket_queue = get_ticket_queue()

for ticket_id, ticket_summary in zip(*ticket_queue):
    bad_ticket_id = next_steps(ticket_id)    
    if "good" not in bad_ticket_id:
        print(bad_ticket_id)
        print(ticket_summary)
    else:
        print "good"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM