【问题标题】:Python 3.x join strings from different dictionary values in listPython 3.x 连接来自列表中不同字典值的字符串
【发布时间】:2017-08-19 23:35:48
【问题描述】:

我想连接一些字符串,这是我目前的代码:

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

【问题讨论】:

  • 抱歉 - 编辑结果

标签: python string dictionary


【解决方案1】:

删除嵌套的 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']}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2018-04-24
    相关资源
    最近更新 更多