相关疑难解决方法(0)

Python group by

假设我有一组数据对,其中索引0是值,索引1是类型:

input = [
          ('11013331', 'KAT'), 
          ('9085267',  'NOT'), 
          ('5238761',  'ETH'), 
          ('5349618',  'ETH'), 
          ('11788544', 'NOT'), 
          ('962142',   'ETH'), 
          ('7795297',  'ETH'), 
          ('7341464',  'ETH'), 
          ('9843236',  'KAT'), 
          ('5594916',  'ETH'), 
          ('1550003',  'ETH')
        ]
Run Code Online (Sandbox Code Playgroud)

我想按类型(按第一个索引字符串)对它们进行分组:

result = [ 
           { 
             type:'KAT', 
             items: ['11013331', '9843236'] 
           },
           {
             type:'NOT', 
             items: ['9085267', '11788544'] 
           },
           {
             type:'ETH', 
             items: ['5238761', '962142', '7795297', '7341464', '5594916', '1550003'] 
           }
         ] 
Run Code Online (Sandbox Code Playgroud)

我怎样才能以有效的方式实现这一目标?

python group-by

110
推荐指数
4
解决办法
13万
查看次数

根据任意标准嵌套平面列表

我有一个独特对象的平面列表,其中一些可能与其他对象共享一个给定的属性.我希望创建一个嵌套的列表列表,其中对象按给定属性分组.作为一个最小的例子,给出以下列表:

>>> flat = ["Shoes", "pants", "shirt", "tie", "jacket", "hat"]
Run Code Online (Sandbox Code Playgroud)

我可能想按长度分组,例如:

>>> nest_by_length(flat)
[['tie', 'hat'], ['shoes', 'pants', 'shirt'], ['jacket']]
Run Code Online (Sandbox Code Playgroud)

我见过几个类似的 问题建议.但是,在所有这些情况下,嵌套都基于输入列表的顺序.在我的例子中,输入列表的排序是完全不可预测的,输出的子列表的数量和每个子列表的项目数量也是如此.

是否有标准功能或惯用方法来实现这一目标?

python list

12
推荐指数
1
解决办法
333
查看次数

Groupby itertools 为不同的组提供相同的密钥

我按字符串中的第一个单词和最后一个单词对列表中的字符串元素进行分组。我正在使用groupbyfromitertools进行分组。该过程似乎对最后一个单词运行良好,但对第一个单词似乎效果不佳。

from itertools import groupby

model_eval_cols = ['MAD model meFuelFlowStar', 'MedAD model meFuelFlowStar', 'MAD model rpmStar', 'MedAD model rpmStar']

for k, v in groupby(model_eval_cols, key=lambda x: x.split(' ')[2]):
    print(k, list(v))
Run Code Online (Sandbox Code Playgroud)

以上输出

meFuelFlowStar ['MAD model meFuelFlowStar', 'MedAD model meFuelFlowStar']
rpmStar ['MAD model rpmStar', 'MedAD model rpmStar']
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试将字符串按第一个单词分组:

for k, v in groupby(model_eval_cols, key=lambda x: x.split(' ')[0]):
    print(k, list(v))
Run Code Online (Sandbox Code Playgroud)

似乎不起作用

MAD ['MAD model meFuelFlowStar']
MedAD ['MedAD model meFuelFlowStar']
MAD ['MAD model rpmStar']
MedAD ['MedAD model rpmStar']
Run Code Online (Sandbox Code Playgroud)

这让我很惊讶,因为按键是相同的

python split group-by python-itertools

0
推荐指数
1
解决办法
1610
查看次数

标签 统计

python ×3

group-by ×2

list ×1

python-itertools ×1

split ×1