如何将此字符串数组转换为具有由定义的值的dict数组=

2024-06-29 00:45:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数组:

['clid=1 cid=174 client_database_id=246 client_nickname=Music\\sBot client_type=0', 'clid=2 cid=181 client_database_id=247 client_nickname=xxx client_type=0', 'clid=5 cid=174 client_database_id=140 client_nickname=xxx client_type=0', 'clid=6 cid=174 client_database_id=158 client_nickname=xxx client_type=0', 'clid=7 cid=174 client_database_id=218 client_nickname=xxx client_type=0', 'clid=11 cid=174 client_database_id=202 client_nickname=xxx client_type=0']

我想变成这样

[{"clid": 1,
"cid": 174,
"client_database_id": 246,
"client_nickname": "Music\\sBot"
"client_type":0},
{"clid": 2,
"cid": 181,
"client_database_id": 247,
"client_nickname": "xxx"
"client_type":0}, {...}

最好的办法是什么


Tags: clientidtypenicknamemusic数组databasexxx
1条回答
网友
1楼 · 发布于 2024-06-29 00:45:40

可以使用list comprehension,按空格拆分每个项目,按=拆分每个对,并将对传递给^{} constructor以创建字典:

In [2]: processed_list = [dict(pair.split('=') for pair in item.split(' ')) 
                          for item in your_list]
In[3]: processed_list
Out[3]: 
[{'cid': '174',
  'clid': '1',
  'client_database_id': '246',
  'client_nickname': 'Music\\sBot',
  'client_type': '0'},
 ...
 {'cid': '174',
  'clid': '11',
  'client_database_id': '202',
  'client_nickname': 'xxx',
  'client_type': '0'}]

其中your_list是您的列表


如果您想进一步将id和client类型转换为整数,可以有多种方法来实现这一点—例如,我们可以将以idtype结尾的键转换为int()项:

processed_list = [{key: (int(value) if key.endswith(('id', 'type')) else value) 
                   for key, value in entry.items()} 
                  for entry in processed_list]

相关问题 更多 >