小编cec*_*rik的帖子

在for循环中对数据进行分组

我需要循环遍历已排序的数据集,将该排序属性的所有结果分组为块,这些块对于该属性都具有相同的值.然后我在那块结果上运行一些操作.

对不起,这有点令人困惑,示例可能是描述我正在做的更好的方式:

我有一个像这样结构化的数据集,除了"数据"字符串实际上是对象并包含大量其他数据.

[ [1, "data1"], [1, "data2"], [2, "moredata"], [2, "stuff"], 
  [2, "things"], [2, "foo"], [3, "bar"], [4, "baz"] ]
Run Code Online (Sandbox Code Playgroud)

我想要发生的是将数据分组为4个不同的函数调用:

process_data(1, ["data1", "data2"])
process_data(2, ["moredata", "stuff", "things", "foo"])
process_data(3, ["bar"])
process_data(4, ["baz"])
Run Code Online (Sandbox Code Playgroud)

我最终得到的结构看起来像这样:

last_id = None
grouped_data = []

for row in dataset:
    id = row[0]
    data = row[1]

    if last_id != id:
         # we're starting a new group, process the last group
         processs_data(last_id, grouped_data)
         grouped_data = []
    last_id = id
    grouped_data.append(data)

if grouped_data:
    # we're done the …
Run Code Online (Sandbox Code Playgroud)

python grouping loops

3
推荐指数
1
解决办法
2529
查看次数

编译适用于Python 3.x的Python C模块时,PY_MAJOR_VERSION未定义

我正在尝试升级一个小型C模块以使其与Python 3.x兼容,并且无法使其编译。我现在的障碍是预处理器定义了我应该用来检查Python版本是否正常的代码。

目前,该模块包含两个.c文件(我暂时将其余文件注释掉了)。在这两个文件中,PY_MAJOR_VERSION均未定义,因此编译器无法在需要的地方使用特定于Python 3.x的定义。

mymodule.c:

#ifndef PY_MAJOR_VERSION
#error Major version not defined!
#endif

#if PY_MAJOR_VERSION >= 3
#define PY3K
#endif

#include "Python.h"
#include "myobj.h"

/* omitted: irrelevant boilerplate structs */

PyMODINIT_FUNC
initmymodule(void)
{
    PyObject* m;

#ifdef PY3K
    m = PyModule_Create(&mymodule_struct);
#else
    (void) Py_InitModule("mymodule", MyModMethods);
    m = Py_InitModule3("mymodule", NULL,
               "My Module");
#endif

    /* omitted: the rest of the module init code */
}
Run Code Online (Sandbox Code Playgroud)

myobj.c:

#ifndef PY_MAJOR_VERSION
#error Major version not defined!
#endif

#if PY_MAJOR_VERSION >= 3
#define PY3K
#endif

#include "Python.h" …
Run Code Online (Sandbox Code Playgroud)

c python visual-studio-2008 python-3.x

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

标签 统计

python ×2

c ×1

grouping ×1

loops ×1

python-3.x ×1

visual-studio-2008 ×1