Python 如何从字典列表中提取值

Python 如何从字典列表中提取值,python,list,dictionary,Python,List,Dictionary,我有一个字典列表叫做“空列表” B实际上我想得到一个列表,new\u 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:列表索引必须是整数,而不是str 但不管怎么说,这似乎是可行的。问题是new\u lis

我有一个字典列表叫做“空列表”

B实际上我想得到一个列表,
new\u 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:列表索引必须是整数,而不是str

但不管怎么说,这似乎是可行的。问题是
new\u list
的长度仅为24(而
empty\u list
的长度为288)


你知道我如何调试它吗?

你可以把你的列表分成两个字典

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}]
然后

现在你有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'])

你确定吗?您的精确代码不会给我带来任何错误,并且工作得非常好。另一方面,如果列表不是空的,请不要使用名称
empty\u list
。这可能是因为
emptyList
中的某些条目不是dicts。该错误意味着某些条目可能是自己列出的。如何检查所有条目是否都是dict?您可以通过在for循环中打印条目的类型来进行调试。从集合导入计数器打印
类型(项目)==dict
应尝试
;计数器(映射(类型,空列表))
打印出初始
空列表中每种类型的计数。
{'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'])