Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python字典中的多个值_Python_Dictionary - Fatal编程技术网

python字典中的多个值

python字典中的多个值,python,dictionary,Python,Dictionary,我有以下格式的数据(保存在列表中) 现在,我基本上想根据类别来划分项目。。 基本上是一个字典,其中key是类别,其余内容(id、price、data)是它的值 我已经创建了一个datastructure,让datastructre“item”具有上述四个属性(id、price、date、category) 所以基本上我想要的是一本以下形式的字典: {1: [item_1,item_2....], 2:[item....]} 我该怎么做。。 由于一个键中有许多值,因此我知道它将使用defaul

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

现在,我基本上想根据类别来划分项目。。 基本上是一个字典,其中key是类别,其余内容(id、price、data)是它的值 我已经创建了一个datastructure,让datastructre“item”具有上述四个属性(id、price、date、category) 所以基本上我想要的是一本以下形式的字典:

{1: [item_1,item_2....], 2:[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')]}

一种方法是使用字典,其中每个值都是项目列表(id、价格、日期),关键是类别

大致如下,其中
d
是一个字典,
c
是一个类别,
itm
是一个元组/项:

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

假设当前数据存储在列表
list\u data
中,我认为您需要这样的数据:

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

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

我不完全理解您的问题。为什么python dict不适合您?
def insert(d, c, itm):
  if not c in d:
    d[c] = [itm]
  else:
    d[c].append(itm)
dict_data = defaultdict(list)
for item in list_data:
    dict_data[item.category].append(item)