繁体   English   中英

如何更改列表内字典中的字符串键| python3.6

[英]how to change string key in dictionary inside list | python3.6

我想将键名'user_id'更改为'sender'例如:

[{'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 1,
  'user_id': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 2,
  'user_id': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 3,
  'user_id': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 4,
  'user_id': 1000000}]

至 :

[{'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 1,
  'sender': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 2,
  'sender': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 3,
  'sender': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 4,
  'sender': 1000000}]

我该怎么办?

只需遍历数据并更改将适当的分配给'sender'键的字典,即可从'user_id' pop

for d in data:
    d['sender'] = d.pop('user_id')

没有循环怎么办?

一线解决方案:

list(map(lambda x:x.__setitem__('sender',x.pop('user_id')),your_data))

数据是:

your_data=[{'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 1,
  'user_id': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 2,
  'user_id': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 3,
  'user_id': 1000000},
 {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3',
  'message_id': 4,
  'user_id': 1000000}]

输出:

[{'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3', 'message_id': 1, 'sender': 1000000}, {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3', 'message_id': 2, 'sender': 1000000}, {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3', 'message_id': 3, 'sender': 1000000}, {'chat_id': 'e3c2b14ded7a32c41bf0186b6172d8e3', 'message_id': 4, 'sender': 1000000}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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