字典python中的多个值

时间:2011-10-27 16:58:37

标签: python dictionary

我有以下表格的数据(保存在列表中)

id, price, date, category

现在,我基本上想根据类别分开项目.. 基本上是一个字典,其中key是类别,其余的东西(id,price,data)是它的值 我已经创建了一个数据结构,所以让datastructre'item'具有上述四个属性(id,price,date,category) 基本上我想要的是以下形式的字典:

{1: [item_1,item_2....], 2:[item....]} 

我该怎么做 由于单个键中有许多值,因此我知道它将使用defaultdict ..但我仍然无法解决这个问题。 感谢

3 个答案:

答案 0 :(得分:4)

output = defaultdict(list)
for item, cat in ((x[:-1], x[-1]) for x in data):
    output[cat].append(item)

或没有defaultdict:

output = {}
for item, cat in ((x[:-1], x[-1]) for x in data):
    output.setdefault(cat, []).append(item)

示例输出:

>>> data = [
...     (1, 123, "somedate", "boy"),
...     (3, 435, "anotherdate", "boy"),
...     (23, 123, "moredate", "girl"),
... ]
>>> output = {}
>>> for item, cat in ((x[:-1], x[-1]) for x in data):
...     output.setdefault(cat, []).append(item)
... 
>>> print output
{'boy': [(1, 123, 'somedate'), (3, 435, 'anotherdate')], 'girl': [(23, 123, 'moredate')]}

答案 1 :(得分:4)

我认为你想要这样的东西,假设你当前的数据存储在列表list_data中:

dict_data = defaultdict(list)
for item in list_data:
    dict_data[item.category].append(item)

如果每个项目都是元组而不是对象,请使用item[3]代替item.category

答案 2 :(得分:2)

这样做的一种方法是使用字典,其中每个值都是项目列表(ID,价格,日期),密钥是类别。

以下内容,其中d是字典,c是一个类别,itm是一个元组/项目:

def insert(d, c, itm):
  if not c in d:
    d[c] = [itm]
  else:
    d[c].append(itm)