Python - 迭代并提取字典类型列表的元素
Python - Iterate through, and extract, elements of a dictionary type list
我有一个包含许多元素的列表,其中一些元素有自己的子列表。示例列表如下(我的实际列表有 >100 个元素!):
data_all = [{u'heatindexm': u'-9999', u'windchillm': u'-999', u'wdire': u'ENE', u'wdird': u'70', u'windchilli': u'-999', u'hail': u'0', u'heatindexi': u'-9999', u'precipi': u'', u'thunder': u'0', u'pressurei': u'29.95', u'snow': u'0', u'pressurem': u'1014', u'fog': u'0', u'icon': u'', u'precipm': u'', u'conds': u'', u'tornado': u'0', u'hum': u'44', u'tempi': u'71', u'tempm': u'22', u'dewptm': u'12', u'rain': u'0', u'dewpti': u'54', u'date': {u'mday': u'01', u'hour': u'00', u'min': u'00', u'mon': u'07', u'pretty': u'12:00 AM BST on July 01, 2015', u'year': u'2015', u'tzname': u'Europe/London'}, u'visi': u'12', u'vism': u'19', u'utcdate': {u'mday': u'30', u'hour': u'23', u'min': u'00', u'mon': u'06', u'pretty': u'11:00 PM GMT on June 30, 2015', u'year': u'2015', u'tzname': u'UTC'}, u'wgusti': u'', u'metar': u'AAXX 30234 03772 45/69 /0710 10215 20120 30111 40140 58018 333 55300 20000', u'wgustm': u'', u'wspdi': u'11.5', u'wspdm': u'18.5'}, {u'heatindexm': u'-9999', u'windchillm': u'-999', u'wdire': u'East', u'wdird': u'90', u'windchilli': u'-999', u'hail': u'0', u'heatindexi': u'-9999', u'precipi': u'-9999.00', u'thunder': u'0', u'pressurei': u'29.95', u'snow': u'0', u'pressurem': u'1014', u'fog': u'0', u'icon': u'clear', u'precipm': u'-9999.00', u'conds': u'Clear', u'tornado': u'0', u'hum': u'56', u'tempi': u'69.8', u'tempm': u'21.0', u'dewptm': u'12.0', u'rain': u'0', u'dewpti': u'53.6', u'date': {u'mday': u'01', u'hour': u'00', u'min': u'20', u'mon': u'07', u'pretty': u'12:20 AM BST on July 01, 2015', u'year': u'2015', u'tzname': u'Europe/London'}, u'visi': u'-9999.0', u'vism': u'-9999.0', u'utcdate': {u'mday': u'30', u'hour': u'23', u'min': u'20', u'mon': u'06', u'pretty': u'11:20 PM GMT on June 30, 2015', u'year': u'2015', u'tzname': u'UTC'}, u'wgusti': u'-9999.0', u'metar': u'METAR EGLL 302320Z 09008KT CAVOK 21/12 Q1014 NOSIG', u'wgustm': u'-9999.0', u'wspdi': u'9.2', u'wspdm': u'14.8'}]
我想遍历列表并从每个元素中提取某些信息(例如 ['pressurem'] 和 ['tempm'],以及元素子列表中的信息,例如 ['utcdate']['hour'] 和 ['utcdate']['min'] 这样每次迭代的输出都被放入一个新列表中。这些新列表将在转,放置(作为元素)在宏列表中。
我知道如何手动获得我想要的 information/values 兴趣,即我可以为每个元素提取感兴趣的值,如下面的代码所示。此代码 returns 我有兴趣从 data_all 列表中的第一个元素中找到的值(包括来自子列表的信息)。
data_string_sample=((data_all[0]['utcdate']['mday']),(data_all[0]['utcdate']['mon']),(data_all[0]['utcdate']['year']),(data_all[0]['utcdate']['hour']),(data_all[0]['utcdate']['min']),(data_all[0]['tempm']),(data_all[0]['hum']),(data_all[0]['pressurem']))
data_string_list=list(data_string_sample)
print(data_string_list)
然而,以上仅适用于列表的第一个元素,我无法找出 for 循环的正确语法,该循环将遍历 data_all 列表的每个元素并为每个元素产生相同的输出data_all 列表中的元素。 data_all 列表的每个元素的输出都可以被捕获并放入一个新列表中......我希望上面的内容不会太混乱;基本上我正在尝试以下面的方式使用 for 循环(或类似的):
for i in data_all:
generate i number of data_strings
convert each data_string into a list
have each mini list as an element within a new list (list_of_elements)
print (list_of_elements) to show:
#1 [u'30', u'06', u'2015', u'23', u'00', u'22', u'44', u'1014']
#2 [u'11:20 PM GMT on June 30, 2015', u'21.0', u'56', u'1014']
#3 etc......
对于新手问题表示歉意 - 可能有一个函数或库可以为我完成上述操作,但我只是在学习编码,所以我希望能够以正确的方式编写上述内容 Python语法。
您已经显示此代码:
data_string_sample=((data_all[0]['utcdate']['mday']),(data_all[0]['utcdate']['mon']),(data_all[0]['utcdate']['year']),(data_all[0]['utcdate']['hour']),(data_all[0]['utcdate']['min']),(data_all[0]['tempm']),(data_all[0]['hum']),(data_all[0]['pressurem']))
data_string_list=list(data_string_sample)
print(data_string_list)
在您专门引用元素 0 的地方,改为使用变量。您可以使用一个数字,例如:
for i in range(len(data_all)):
data_string_sample=((data_all[i]['utcdate']['mday']),(data_all[i]['utcdate']['mon']),(data_all[i]['utcdate']['year']),(data_all[i]['utcdate']['hour']),(data_all[i]['utcdate']['min']),(data_all[i]['tempm']),(data_all[i]['hum']),(data_all[i]['pressurem']))
然而,让循环为您处理索引更自然:
for data in data_all:
data_string_sample=((data['utcdate']['mday']),(data['utcdate']['mon']),(data['utcdate']['year']),(data['utcdate']['hour']),(data['utcdate']['min']),(data['tempm']),(data['hum']),(data['pressurem']))
要将每一项都收集到一个列表中,请制作一个列表并附加您的数据:
interesting_data = []
for data in data_all:
data_string_sample=((data['utcdate']['mday']),(data['utcdate']['mon']),(data['utcdate']['year']),(data['utcdate']['hour']),(data['utcdate']['min']),(data['tempm']),(data['hum']),(data['pressurem']))
interesting_data.append(data_string_sample)
我有一个包含许多元素的列表,其中一些元素有自己的子列表。示例列表如下(我的实际列表有 >100 个元素!):
data_all = [{u'heatindexm': u'-9999', u'windchillm': u'-999', u'wdire': u'ENE', u'wdird': u'70', u'windchilli': u'-999', u'hail': u'0', u'heatindexi': u'-9999', u'precipi': u'', u'thunder': u'0', u'pressurei': u'29.95', u'snow': u'0', u'pressurem': u'1014', u'fog': u'0', u'icon': u'', u'precipm': u'', u'conds': u'', u'tornado': u'0', u'hum': u'44', u'tempi': u'71', u'tempm': u'22', u'dewptm': u'12', u'rain': u'0', u'dewpti': u'54', u'date': {u'mday': u'01', u'hour': u'00', u'min': u'00', u'mon': u'07', u'pretty': u'12:00 AM BST on July 01, 2015', u'year': u'2015', u'tzname': u'Europe/London'}, u'visi': u'12', u'vism': u'19', u'utcdate': {u'mday': u'30', u'hour': u'23', u'min': u'00', u'mon': u'06', u'pretty': u'11:00 PM GMT on June 30, 2015', u'year': u'2015', u'tzname': u'UTC'}, u'wgusti': u'', u'metar': u'AAXX 30234 03772 45/69 /0710 10215 20120 30111 40140 58018 333 55300 20000', u'wgustm': u'', u'wspdi': u'11.5', u'wspdm': u'18.5'}, {u'heatindexm': u'-9999', u'windchillm': u'-999', u'wdire': u'East', u'wdird': u'90', u'windchilli': u'-999', u'hail': u'0', u'heatindexi': u'-9999', u'precipi': u'-9999.00', u'thunder': u'0', u'pressurei': u'29.95', u'snow': u'0', u'pressurem': u'1014', u'fog': u'0', u'icon': u'clear', u'precipm': u'-9999.00', u'conds': u'Clear', u'tornado': u'0', u'hum': u'56', u'tempi': u'69.8', u'tempm': u'21.0', u'dewptm': u'12.0', u'rain': u'0', u'dewpti': u'53.6', u'date': {u'mday': u'01', u'hour': u'00', u'min': u'20', u'mon': u'07', u'pretty': u'12:20 AM BST on July 01, 2015', u'year': u'2015', u'tzname': u'Europe/London'}, u'visi': u'-9999.0', u'vism': u'-9999.0', u'utcdate': {u'mday': u'30', u'hour': u'23', u'min': u'20', u'mon': u'06', u'pretty': u'11:20 PM GMT on June 30, 2015', u'year': u'2015', u'tzname': u'UTC'}, u'wgusti': u'-9999.0', u'metar': u'METAR EGLL 302320Z 09008KT CAVOK 21/12 Q1014 NOSIG', u'wgustm': u'-9999.0', u'wspdi': u'9.2', u'wspdm': u'14.8'}]
我想遍历列表并从每个元素中提取某些信息(例如 ['pressurem'] 和 ['tempm'],以及元素子列表中的信息,例如 ['utcdate']['hour'] 和 ['utcdate']['min'] 这样每次迭代的输出都被放入一个新列表中。这些新列表将在转,放置(作为元素)在宏列表中。
我知道如何手动获得我想要的 information/values 兴趣,即我可以为每个元素提取感兴趣的值,如下面的代码所示。此代码 returns 我有兴趣从 data_all 列表中的第一个元素中找到的值(包括来自子列表的信息)。
data_string_sample=((data_all[0]['utcdate']['mday']),(data_all[0]['utcdate']['mon']),(data_all[0]['utcdate']['year']),(data_all[0]['utcdate']['hour']),(data_all[0]['utcdate']['min']),(data_all[0]['tempm']),(data_all[0]['hum']),(data_all[0]['pressurem']))
data_string_list=list(data_string_sample)
print(data_string_list)
然而,以上仅适用于列表的第一个元素,我无法找出 for 循环的正确语法,该循环将遍历 data_all 列表的每个元素并为每个元素产生相同的输出data_all 列表中的元素。 data_all 列表的每个元素的输出都可以被捕获并放入一个新列表中......我希望上面的内容不会太混乱;基本上我正在尝试以下面的方式使用 for 循环(或类似的):
for i in data_all:
generate i number of data_strings
convert each data_string into a list
have each mini list as an element within a new list (list_of_elements)
print (list_of_elements) to show:
#1 [u'30', u'06', u'2015', u'23', u'00', u'22', u'44', u'1014']
#2 [u'11:20 PM GMT on June 30, 2015', u'21.0', u'56', u'1014']
#3 etc......
对于新手问题表示歉意 - 可能有一个函数或库可以为我完成上述操作,但我只是在学习编码,所以我希望能够以正确的方式编写上述内容 Python语法。
您已经显示此代码:
data_string_sample=((data_all[0]['utcdate']['mday']),(data_all[0]['utcdate']['mon']),(data_all[0]['utcdate']['year']),(data_all[0]['utcdate']['hour']),(data_all[0]['utcdate']['min']),(data_all[0]['tempm']),(data_all[0]['hum']),(data_all[0]['pressurem']))
data_string_list=list(data_string_sample)
print(data_string_list)
在您专门引用元素 0 的地方,改为使用变量。您可以使用一个数字,例如:
for i in range(len(data_all)):
data_string_sample=((data_all[i]['utcdate']['mday']),(data_all[i]['utcdate']['mon']),(data_all[i]['utcdate']['year']),(data_all[i]['utcdate']['hour']),(data_all[i]['utcdate']['min']),(data_all[i]['tempm']),(data_all[i]['hum']),(data_all[i]['pressurem']))
然而,让循环为您处理索引更自然:
for data in data_all:
data_string_sample=((data['utcdate']['mday']),(data['utcdate']['mon']),(data['utcdate']['year']),(data['utcdate']['hour']),(data['utcdate']['min']),(data['tempm']),(data['hum']),(data['pressurem']))
要将每一项都收集到一个列表中,请制作一个列表并附加您的数据:
interesting_data = []
for data in data_all:
data_string_sample=((data['utcdate']['mday']),(data['utcdate']['mon']),(data['utcdate']['year']),(data['utcdate']['hour']),(data['utcdate']['min']),(data['tempm']),(data['hum']),(data['pressurem']))
interesting_data.append(data_string_sample)