字典理解中的嵌套循环

Ani*_*rma 2 python dictionary dictionary-comprehension

我有一个现有的字典列表如下:

FA = [{u'child': [{u'cdesc': u'Audit'},
                  {u'cdesc': u'Equity Research'},
                  {u'cdesc': u'Finance / Accounts / Tax'},
                  {u'cdesc': u'Investment Banking / M&A'}],
       u'pdesc': u'Finance / Accounts / Investment Banking',
       u'pid': 10007}]
Run Code Online (Sandbox Code Playgroud)

我想将它转换为这样的东西:

FA = {u'Audit':2,
     u'Equity Research':2,
     u'Finance / Accounts / Tax':2,
     u'Investment Banking / M&A':2,
     u'Finance / Accounts / Investment Banking':2}
Run Code Online (Sandbox Code Playgroud)

我可以使用嵌套循环轻松完成此操作,其代码如下所示.有没有办法使用词典理解来做到这一点?

a = dict()
for fa in FA:
    a.update({slugify(fa['pdesc']):2})


    for c in fa['child']: 
        a.update({slugify(c['cdesc']):2})
Run Code Online (Sandbox Code Playgroud)

Ren*_*der 5

字典理解在这里看起来很丑陋...无论如何......

# METHOD 1
FA_dict1 = {d:2 for v in FA[0][u'child'] for d in v.values()}
FA_dict1.update({FA[0][u'pdesc']: 2})


# METHOD 2
from itertools import chain
FA_dict = {d:2 for v in FA[0][u'child'] for d in chain(v.values(), [FA[0][u'pdesc']])}


# METHOD 3
FA_DICT = {d:2 for v in FA[0][u'child'] for d in list(v.values())+[FA[0][u'pdesc']]}
Run Code Online (Sandbox Code Playgroud)