【发布时间】:2021-03-19 17:27:21
【问题描述】:
我有一个 input 字符串列表,这些字符串由逗号分隔,如下所示:
list_to_split = ['flyer, black and white', 'flyer, blue', 'fly-swatter, black', 'helmet, heavy',
'armlet, silver and gold', 'cherry, black', 'violin, very old', 'concrete, grey']
我想遍历以相同字母开头的项目,并用它们更新一个空字典,以获得如下所示的所需输出:
letter_ordered_dict = {'a': ['armet'], 'c': ['cherry', 'concrete'], 'f': ['flyer', 'fly-swatter'],
'h': ['helmet'], 'v': ['violin']}
首先,我尝试这样做的方式显然是首先通过理解获取原始列表的第一个元素:
list_split_by_first_element = [first_elm.split(',')[0] for elm in list_that_has_been_ordered]
list_split_by_first_element.sort()
这会产生输出:
['armlet', 'cherry', 'concrete', 'flyer', 'flyer', 'fly-swatter', 'helmet', 'violin']
我坚持的部分是如何按这些元素的第一个字母分组并跳过重复项以生成上面的输出。
有更好的方法吗?
【问题讨论】:
-
-
是的,可能是最好的。在循环内部,我可以通过字符串本身的第一个元素进一步拆分字符串元素,将其链接到字典键,并在内部附加到值列表。
-
我不知道你在想什么组——我只是觉得你写的东西完全是愚蠢的,因为你没有尝试自己做或找到一个(太常见了没有在这里提出问题)。您应该发送honest attempt at the solution,然后然后询问有关它的具体问题(如有必要)。
-
您需要在每个字母条目中对项目进行排序吗?或者任何订单都可以吗?如果每个字母列表中的项目可能是乱序的,那么使用
set()类型有相对简单/快速的重复删除方法。如果应该对它们进行排序,那就有点棘手了。
标签: python python-3.x list dictionary grouping