2017-08-01 108 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'])