繁体   English   中英

如何根据某些条件将字典列表拆分为单独的字典列表?

[英]How can I split a list of dictionaries in separate lists of dictionaries based on some condition?

我是 python 的新手,我正在尝试根据某些条件将字典列表拆分为单独的字典列表。

这就是我的列表的样子:

[{'username': 'AnastasiadesCY',
  'created_at': '2020-12-02 18:58:16',
  'id': 1.33421029132062e+18,
  'language': 'en',
  'contenttype': 'text/plain',
  'content': 'Pleased to participate to the international conference in support of the Lebanese people. Cypriot citizens, together with the Government 🇨🇾, have provided significant quantities of material assistance, from the day of the explosion until today.\n\n#Lebanon 🇱🇧'},
 {'username': 'AnastasiadesCY',
  'created_at': '2020-11-19 18:13:06',
  'id': 1.32948788307022e+18,
  'language': 'en',
  'contenttype': 'text/plain',
  'content': '#Cyprus stand ready to support all efforts towards a coordinated approach of vaccination strategies across Europe, that will prove instrumental in our fight against the pandemic.\n\nUnited Against #COVID19 \n\n#EUCO'},...

我想将具有相同用户名的所有列表元素拆分并分组到单独的字典列表中。 列表的元素 - 所以每个字典 - 按用户名排序。

有没有办法遍历字典和 append 每个元素到一个列表,直到“项目 1”中的用户名等于“项目 1 + 1”中的用户名等等?

谢谢您的帮助!

更好的方法是创建一个字典,其中username作为键,值作为用户属性列表

op = defauldict(list)
for user_dic in list_of_userdictss:
    op[user_dic.pop('username')].append(user_dic)
op = OrderedDict(sorted(user_dic.items()))

如果我们按它对列表进行排序,则找到相同的东西效果最好——然后所有相同的名称都彼此相邻。

但即使在排序之后,我们也不需要手动做这些事情——已经有工具可以做到这一点。 :) - itertools.groupby 文档一个很好的解释它是如何工作的

from itertools import groupby
from operator import itemgetter

my_list.sort(key=itemgetter("username"))
result = {}
for username, group in groupby(my_list, key=itemgetter("username")):
   result[username] = list(group)

result是一个以用户名作为键的字典

如果您想要一个列表列表,请执行result = []然后result.append(list(group))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM