【问题标题】:multiple values in a dictionary python字典python中的多个值
【发布时间】:2011-10-27 16:58:37
【问题描述】:

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

id, price, date, category

现在,我基本上想根据类别分开项目.. 基本上是一个字典,其中键是类别,其余的东西(id、价格、数据)是它的值 我已经创建了一个数据结构,所以让一个数据结构“项目”具有上述四个属性(id、价格、日期、类别) 所以基本上我想要的是以下形式的字典:

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

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

【问题讨论】:

  • 我不完全理解你的问题。为什么 python dict 不适合你?

标签: python dictionary


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:
    output = defaultdict(list)
    for item, cat in ((x[:-1], x[-1]) for x in data):
        output[cat].append(item)
    

    或者,没有默认字典:

    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')]}
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-02-08
        • 2021-09-03
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        • 2011-06-09
        • 1970-01-01
        • 2019-02-08
        • 1970-01-01
        相关资源
        最近更新 更多