Use of yield with a dict comprehension

前端 未结 4 930
醉梦人生
醉梦人生 2021-02-07 01:53

As a contrived example:

myset = set([\'a\', \'b\', \'c\', \'d\'])
mydict = {item: (yield \'\'.join([item, \'s\'])) for item in myset}

and

4条回答
  •  南旧
    南旧 (楼主)
    2021-02-07 02:23

    I think that your code has to execute similarity of this:

    def d(myset):
        for item in myset:
            yield item, (yield ''.join([item, 's']))
    
    d(myset)
    

    Firstly, evaluated yield ''.join([item, 's'] (and return 'as', 'cs', etc.). Value of yield expression is None, because is sent back to the generator. And then eval yield item, None, that return tuples ('a', None), ('b', None).

    So, I have:

    >>> list(d(myset))
    ['as', ('a', None), 'cs', ('c', None), 'bs', ('b', None), 'ds', ('d', None)]
    

    What happens next, I do not understand.

提交回复
热议问题