python3.x连接lis中不同字典值的字符串

2024-05-26 03:24:00 发布

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

我想串联一些字符串,下面是我目前的代码:

ad = {'documents':[{'id': '1', 'detectedLanguages': [{'name': 'english',
                                                     'iso6391': 'en',
                                                     'score': '1'},
                                                    {'name': 'french',
                                                     'iso6391': 'fr',
                                                     'score': '0.9'}]},
                  {'id': '2', 'detectedLanguages': [{'name': 'dutch',
                                                     'iso6391': 'hol',
                                                     'score': '1'},
                                                    {'name': 'russian',
                                                     'iso6391': 'rus',
                                                     'score': '0.9'}]}
                  ]
     }

langs = {}
for dct in ad['documents']:
    langs [str(dct['id'])] = (
        ','.join(x for detected_lang_dict in dct['detectedLanguages'] for x     in detected_lang_dict['iso6391'])
        )

print (langs)
#prints {'1': 'h,o,l,r,u,s'}

我希望结果像{'1':'en,fr','2':'hol,rus'}


Tags: nameinidforfraddocumentsen
1条回答
网友
1楼 · 发布于 2024-05-26 03:24:00

删除嵌套的for以避免连接每个字符而不是整个字符串:

langs = {}
for dct in ad['documents']:
    langs[dct['id']] = ', '.join(d['iso6391'] for d in dct['detectedLanguages'])
print (langs)
# {'1': 'en, fr', '2': 'hol, rus'}

您不需要在dict键上调用string,它已经是一个字符串了。你知道吗

顺便说一句,你可以使用字典理解:

langs = {dct['id']: ', '.join(d['iso6391'] for d in dct['detectedLanguages']) 
                                           for dct in ad['documents']}

相关问题 更多 >