简体   繁体   English

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

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

I want to change key name 'user_id' to 'sender' as example : 我想将键名'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}]

to : 至 :

[{'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}]

what shoud I do? 我该怎么办?

Just loop over the data and change the dicts appropriately assigning to the 'sender' key what you pop from 'user_id' : 只需遍历数据并更改将适当的分配给'sender'键的字典,即可从'user_id' pop

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

What about without loop ? 没有循环怎么办?

One line Solution: 一线解决方案:

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

data is: 数据是:

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

output: 输出:

[{'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