繁体   English   中英

如何更改字典列表中每个字典中的键名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM