2017-08-01 66 views
-1

的名单我已经dictionnaries名单称为“EMPTY_LIST”我怎样才能提取值从dictionnaries

[{u'course': 123, 
    u'lat': 123, 
    u'lon': 123, 
    u'navigationalStatus': 0.0, 
    u'sog': 0.0, 
    u'ts': 123, 
    u'Id': u'abcd'}, 
{u'course': 123, 
    u'lat': 123, 
    u'lon': 123, 
    u'navigationalStatus': 0.0, 
    u'sog': 123, 
    u'ts': 123, 
    u'Id': u'abcde'}] 

Bsically我希望得到一个列表,new_list

[(u'abcd', lat, lon), 
(u'abcde', lat, lon)] 

当我这样做:

new_list = [] 
for item in empty_list: 
    new_list.append((item['Id'],item['lat'], item['lon'])) 

我得到TypeError: list indices must be integers, not str

但它似乎无论如何工作。问题是new_list的长度只有24(当empty_list的长度为288时)。

你有什么想法我可以调试吗?

+0

你确定吗?您的确切代码不会为我提出任何错误,并且工作得很好。在附注中,如果列表不为空,则不要使用名称'empty_list'。 – DeepSpace

+3

这可能是因为'emptyList'中的某些条目不是dicts。错误意味着有些条目可能是列表本身 – Kamehameha

+0

如何检查所有条目是否是字典? –

回答

1

您可以将列表分为两个库

e 
[{'Id': 'abcd', 
    'course': 123, 
    'lat': 123, 
    'lon': 123, 
    'navigationalStatus': 0.0, 
    'sog': 0.0, 
    'ts': 123}, 
{'Id': 'abcde', 
    'course': 123, 
    'lat': 123, 
    'lon': 123, 
    'navigationalStatus': 0.0, 
    'sog': 123, 
    'ts': 123}] 

然后

chunks = [e[x:x+1] for x in range(0, 2)] 
c0 = chunks[0][0] 
c1 = chunks[1][0] 

现在你已经C0

{'Id': 'abcd', 
'course': 123, 
'lat': 123, 
'lon': 123, 
'navigationalStatus': 0.0, 
'sog': 0.0, 
'ts': 123} 

可以解压键和值,然后选择任你挑选

keys, values = dict.keys(c0), dict.values(c0) 
keys 
dict_keys(['course', 'lat', 'lon', 'navigationalStatus', 'sog', 'ts', 'Id']) 
values 
dict_values([123, 123, 123, 0.0, 0.0, 123, 'abcd'])