Изначально я хотел предложить это:
{k: v for v in mylist for k in mydict if k in v}
Но потом я заметил, что вы на самом деле изменяете свои входные данные, и это не то, что происходит. Это должно фактически сделать то же самое (я сделал предположение или два относительно входных данных):
for key in mydict.keys():
mydict[key].extend((i for i in mylist if key in i))
Но это незапрошенный совет. Фрагмент кода действительно не нуждается в сокращении. Скорее, это может быть связано с немного более многословием и более описательными именами переменных, которые помогут читателю пройти и помочь понять, что происходит.
В любом случае, пожалуйста, не используйте имена переменных, такие как dict
или list
, так как они уже используются для встроенного конструктора типов, и действительно возникает проблема переназначения их другому объекту (в большинстве обстоятельства, и даже если бы они тщательно обдумывались и планировались, я бы все же советовался против этого).