仅当元组包含特定元素时,如何从元组中获取数据?

时间:2017-10-23 00:20:38

标签: python list tuples func

具体来说,我有一些函数可以从.csv文件中获取美国特定州的人口数据。状态代码是列表中的第一个[0]元素,因此是AK,或MS,MT等。它被保存为具有诸如(州,县,人口等)之类的元组并添加到列表中; DATA_LIST []。

然后我提示输入特定的状态,或通过输入" all来查看所有数据的选项。"如何浏览每个元组并仅附加所需的状态?

这是我到目前为止所做的事情(请注意,在此之前我还有其他功能,以及main()但是它们在这一点上似乎都运行正常:

STATES={'AK','AL','etc.','etc.'}
state = input("\nEnter state code or 'all' or 'quit': ")
def extract_data(data_list,state):
    state_list=[]
    for tup in data_list:
        if state=="all":
            state_list= data_list
        if state in STATES: 
            if tup[0]==state:
                state_list.append(tup)
    print(state_list)

如果其他功能需要澄清,我可以提供,但是现在,该功能只返回所有数据,而不仅仅是所需的状态。

2 个答案:

答案 0 :(得分:3)

使用列表理解

可以更干净地完成这项工作
def extract_data(data_list, state='all'):
    if state == 'all':
        return data_list
    return [t for t in data_list if t[0] == state]

答案 1 :(得分:0)

我可能已经弄清楚了,但是会喜欢一些输入。这是我改变的内容:

STATES={'AK','AL','etc.','etc.'}
state = input("\nEnter state code or 'all' or 'quit': ")
def extract_data(data_list,state):
    state_list=[]
    tup_data=[]
    for tup in data_list:
        if state=="all":
            state_list= data_list
        if state in STATES: 
            if tup[0]==state:
                tup_data=tup
                state_list.append(tup_data)
    print(state_list)

那只打印了特定州的数据,所以我相信这就是我所需要的。但是,我喜欢任何改进或类似的反馈。