[英]Convert a column of list of dictionaries to a column list such that the values are derived from the key "name" under each dictionary in the list
[英]How to alter the name of a key in each dictionary in a list of dictionaries
假设我有以下字典列表my_list
:
[
{'nsme':'bob',
'age':37,
},
{'nsme':'amy',
'age':40,
},
{'nsme':'pat',
'age':28,
}
]
如何创建一个新列表来更正'name'
的拼写? 我想出了如何为my_list
中的任何单个字典执行此操作:
{'name' if k == 'nsme' else k:v for k,v in my_list[0].items()}
但是当我尝试遍历my_list
中的项目时:
[{'name' if k == 'nsme' else k:v for k,v in my_list[i].items()} for i in my_list]
或者
{'name' if k == 'nsme' else k:v for k,v in my_list[i].items() for i in my_list}
我得到一个错误:
TypeError: list indices must be integers or slices, not dict
对于上下文,我运行了一个相当冗长的过程来抓取大量数据,但不小心在命名'name'
键时出现了拼写错误。 我认为创建一个新列表来修复错别字会容易得多,而不是修复此问题并再次重新删除所有内容。
i
指的是列表中的字典,而不是索引。 所以,你的字典理解应该是:
[{'name' if k == 'nsme' else k:v for k,v in elem.items()} for elem in my_list]
(为了清楚起见,我在此代码片段中将i
重命名为elem
。)
我认为您正在寻找的是:
[{'name' if key == 'nsme' else key: value for key, value in d.items()} for d in my_list]
当遍历字典列表时,返回的元素是字典,而不是列表的索引。 因此,列表索引需要是整数或切片而不是字典的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.