Python 使用列表理解生成词典列表的问题

Python 使用列表理解生成词典列表的问题,python,python-3.x,list-comprehension,Python,Python 3.x,List Comprehension,通过上述列表理解,我可以生成字典列表。如果feedvalue相同,我需要将这些值附加到id 电流输出: 预期产出: 使用itertools.groupby 例: 输出: 使用itertools.groupby 例: 输出: 不使用lambda的解决方案,请注意此解决方案与您的问题中的顺序不同: [{'feed': 16, 'id': ['AB-16007891']}, {'feed': 11, 'id': ['BC-4447764']}, {'feed': 18, 'id': ['GR-44

通过上述列表理解,我可以生成字典列表。如果feedvalue相同,我需要将这些值附加到id

电流输出:

预期产出:

使用itertools.groupby

例:

输出:

使用itertools.groupby

例:

输出:


不使用lambda的解决方案,请注意此解决方案与您的问题中的顺序不同:

[{'feed': 16, 'id': ['AB-16007891']},
 {'feed': 11, 'id': ['BC-4447764']},
 {'feed': 18, 'id': ['GR-4444545']},
 {'feed': 12, 'id': ['HA-46257854', 'HA-4625798']}]
我使用以下for循环从feed_映射中拆分键和值:

feed_mapping = {'BC': 11, 'HA': 12, 'AB': 16, 'GR': 18}
x = ['AB-16007891', 'HA-4625798', 'GR-4444545', 'BC-4447764', 'HA-46257854']
feed = [{"feed": feed_value, "id": [i for i in x if feed_key in i]} for
        feed_key, feed_value in feed_mapping.items()]
print(feed)

>>> [{'feed': 11, 'id': ['BC-4447764']}, {'feed': 12, 'id': ['HA-4625798', 'HA-46257854']}, {'feed': 16, 'id': ['AB-16007891']}, {'feed': 18, 'id': ['GR-4444545']}]
i for i in x
然后,我有第二个嵌套for循环,将x中的项添加到id字段:

我注意到,只有当feed_映射键位于I的字符串中时,才需要添加一个id,我在嵌套for循环中使用以下if语句来执行此操作:

feed_mapping = {'BC': 11, 'HA': 12, 'AB': 16, 'GR': 18}
x = ['AB-16007891', 'HA-4625798', 'GR-4444545', 'BC-4447764', 'HA-46257854']
feed = [{"feed": feed_value, "id": [i for i in x if feed_key in i]} for
        feed_key, feed_value in feed_mapping.items()]
print(feed)

>>> [{'feed': 11, 'id': ['BC-4447764']}, {'feed': 12, 'id': ['HA-4625798', 'HA-46257854']}, {'feed': 16, 'id': ['AB-16007891']}, {'feed': 18, 'id': ['GR-4444545']}]
i for i in x

不使用lambda的解决方案,请注意此解决方案与您的问题中的顺序不同:

[{'feed': 16, 'id': ['AB-16007891']},
 {'feed': 11, 'id': ['BC-4447764']},
 {'feed': 18, 'id': ['GR-4444545']},
 {'feed': 12, 'id': ['HA-46257854', 'HA-4625798']}]
我使用以下for循环从feed_映射中拆分键和值:

feed_mapping = {'BC': 11, 'HA': 12, 'AB': 16, 'GR': 18}
x = ['AB-16007891', 'HA-4625798', 'GR-4444545', 'BC-4447764', 'HA-46257854']
feed = [{"feed": feed_value, "id": [i for i in x if feed_key in i]} for
        feed_key, feed_value in feed_mapping.items()]
print(feed)

>>> [{'feed': 11, 'id': ['BC-4447764']}, {'feed': 12, 'id': ['HA-4625798', 'HA-46257854']}, {'feed': 16, 'id': ['AB-16007891']}, {'feed': 18, 'id': ['GR-4444545']}]
i for i in x
然后,我有第二个嵌套for循环,将x中的项添加到id字段:

我注意到,只有当feed_映射键位于I的字符串中时,才需要添加一个id,我在嵌套for循环中使用以下if语句来执行此操作:

feed_mapping = {'BC': 11, 'HA': 12, 'AB': 16, 'GR': 18}
x = ['AB-16007891', 'HA-4625798', 'GR-4444545', 'BC-4447764', 'HA-46257854']
feed = [{"feed": feed_value, "id": [i for i in x if feed_key in i]} for
        feed_key, feed_value in feed_mapping.items()]
print(feed)

>>> [{'feed': 11, 'id': ['BC-4447764']}, {'feed': 12, 'id': ['HA-4625798', 'HA-46257854']}, {'feed': 16, 'id': ['AB-16007891']}, {'feed': 18, 'id': ['GR-4444545']}]
i for i in x
您可以使用defaultdict将列表x转换为字典:

您可以使用defaultdict将列表x转换为字典:


你成就了我的一天:你成就了我的一天:谢谢你的回答伙计:谢谢你的回答伙计: