【发布时间】:2013-08-15 22:33:09
【问题描述】:
我有一个字典列表。可以假设每个列表都有相同格式的字典。我们称之为格式:
dict_sample={'a':0,'b':1}
我们还假设a 是一个随机整数,而 b 可以是几个数字之一(或字符串,就此而言)。我想按b 对所有a 值进行排序。例如,如果我有一个如下列表:
a b
54 1
25 0
53 1
532 2
132 0
list=[{'a':54,'b':1},{'a':25,'b':0},{'a':53,'b':1},{'a':532,'b':2},{'a':132,'b':0}]
我想将其分解为 3 个列表。列表将包括(顺序不重要)
0 list-> [25,132]
1 list-> [54,53]
2 list-> [532]
我知道我可以将列表中的所有a 分解如下,但我无法找到一个优雅的解决方案来按b 对a 进行排序。有什么建议么?到目前为止,我的代码如下所示:
[row['a'] for row in list]
我想要的是这样的:
index=0 #This could be looped through, or just chosen for one specific value
[row['a'] if row['b']==index for row in list]
【问题讨论】:
-
你为什么不只拥有
(a, b)元组? -
我真正的字典有点长,我不想记住它们的索引方案是什么。我宁愿给每个值一个名字。
-
(a, b)namedtuples 可能会有用。 -
你不能循环遍历列表中的每个字典并根据 b 的值添加到正确的子列表中吗?或者我在这里错过了什么? IE。为 b 的每个值创建一个列表。循环浏览所有字典。 if(b == "type1"),将
a添加到 type1 列表。等等
标签: python list python-3.x