[英]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。
我希望这是有道理的。 也许有更好/更简便的方法可以做到这一点,但我不确定那是什么。 简而言之,我试图找出如何从两个不同的列表中的相同索引处打印两个值。
任何帮助是极大的赞赏。
这是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
在您的特定情况下,您的list1
是ticket_queue[0]
,而list2
是ticket_queue[1]
。
让我们重现您的功能:
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.