如何从字典列表中提取值

时间:2017-08-01 08:17:53

标签: python list dictionary

我有一个名为“empty_list”的词典列表

[{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时)。

你知道如何调试吗?

1 个答案:

答案 0 :(得分:0)

您可以将列表分成两个词典

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'])