如何将这个字符串数组转换为dict数组,其值由=定义



我有这个数组:

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

最好的方法是什么?

您可以使用列表理解,按空格拆分每个项,按=拆分每个对,并将对传递给dict()构造函数以创建字典:

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_type转换为整数,可以有多种方法来实现这一点-例如,我们可以将以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]

最新更新