如何拆分Python列表

时间:2014-03-04 22:56:59

标签: python dictionary

我正在查询融合表并将所有信息都列在列表中。现在我想拆分这些列表。为了给你一个更好的想法,我的融合表有以下列:USStates,NOFU2008,NOFU2009,NOFU2010,12MI%,24MI%,USStateCode。这是我的代码 -

service = build('fusiontables', 'v1', developerKey=API_KEY)
query = "SELECT * FROM " + TABLE_ID
response = service.query().sql(sql=query).execute()
data = response['rows']

以下列格式返回数据 -

[[u'Alabama', 290060.0, 694020.0, 1452300.0, 1.093, 4.007, u'US-AL'], [u'Alaska', 46400.0, 160760.0, 300840.0, 0.871, 5.484, u'US-AK'], [u'Arizona', 320320.0, 1017020.0, 2234400.0, 1.197, 5.976, u'US-AZ']]

由此我只想将数据过滤成不同的变量。例如,

var data2008 - [[u'US-AL', 290060.0], [u'US-AK', 46400.0], [u'US-AZ', 320320.0], [u'US-AR', 295280.0]]

我该怎么做?我知道我必须通过for循环运行数据,并将状态代码和NOFU2008添加到新列表中。

2 个答案:

答案 0 :(得分:0)

我认为你这样做是错误的,正如另一个答案所暗示的那样,但如果你必须......

data2008 = {x[-1]:x[1] for x in data}
# {u'US-AL': 290060.0, u'US-AK', 46400.0, ...}
# data2008["US-AL"] == 290060.0
## NOTE THAT DICTIONARIES ARE UNORDERED -- IF YOU NEED TO KEEP THE
## ORDER FOR ANY REASON OTHER THAN DISPLAYING IT TO THE USER (FOR
## WHICH for line in sorted(data2008) WILL WORK PERFECTLY, DO NOT
## DO THIS

答案 1 :(得分:0)

data = [[u'Alabama', 290060.0, 694020.0, 1452300.0, 1.093, 4.007, u'US-AL'], [u'Alaska', 46400.0, 160760.0, 300840.0, 0.871, 5.484, u'US-AK'], [u'Arizona', 320320.0, 1017020.0, 2234400.0, 1.197, 5.976, u'US-AZ']]

data_2008 = [[state[6], state[1]] for state in data]

导致

[[u'US-AL', 290060.0], [u'US-AK', 46400.0], [u'US-AZ', 320320.0]]