小编Ian*_*Gow的帖子

如何在Python中将匹配对聚合到"连接组件"中

现实世界的问题:

我有许多公司的董事数据,但有时候"XYZ的董事John Smith"和"ABC的董事John Smith"是同一个人,有时他们不是.此外,"XYZ的导演约翰J.史密斯"和"ABC的导演约翰史密斯"可能是同一个人,也可能不是.通常检查附加信息(例如,关于"约翰史密斯,XYZ主任"和"约翰史密斯,ABC主任"的传记数据的比较)使得有可能解决两个观察是否是同一个人.

问题的概念版本:

本着这种精神,我正在收集识别匹配对的数据.例如,假设我有以下匹配对:{(a, b), (b, c), (c, d), (d, e), (f, g)}.我想使用关系"与人相同"的传递属性来生成"连通组件" {{a, b, c, d, e}, {f, g}}.那是{a, b, c, d, e}一个人,{f, g}是另一个人.(该问题的早期版本提到了"派系",这显然是别的东西;这可以解释为什么find_cliquesnetworkx给出"错误"结果(为了我的目的).

以下Python代码完成了这项工作.但我想知道:是否有更好的(计算成本更低)方法(例如,使用标准或可用的库)?

这里和那里似乎有相关的例子(例如,python中的Cliques),但这些是不完整的,所以我不确定他们指的是什么库或如何设置我的数据来使用它们.

示例Python 2代码:

def get_cliques(pairs):
    from sets import Set

    set_list = [Set(pairs[0])]

    for pair in pairs[1:]:
        matched=False
        for set in set_list:
            if pair[0] in set or pair[1] in set:
                set.update(pair)
                matched=True
                break
        if not matched:
            set_list.append(Set(pair))

    return set_list

pairs …
Run Code Online (Sandbox Code Playgroud)

python postgresql clique plpython connected-components

16
推荐指数
1
解决办法
3916
查看次数

在Python中展平字符串列表和字符串列表

类似的问题已经被问过,但这些解决方案不为我用的情况下工作(例如,制作一个平面列表出Python列表的列表压扁浅列表在Python,我已经是一个字符串列表和列表,其中嵌入列表也可以包含字符串和列表.我想将其转换为一个简单的字符串列表,而不将字符串拆分为字符列表.

import itertools

list_of_menuitems = ['image10', ['image00', 'image01'], ['image02', ['image03', 'image04']]]
chain = itertools.chain(*list_of_menuitems)
Run Code Online (Sandbox Code Playgroud)

结果清单:

['i', 'm', 'a', 'g', 'e', '1', '0', 'image00', 'image01', 'image02', ['image03', 'image04']]
Run Code Online (Sandbox Code Playgroud)

预期结果:

['image10', 'image00', 'image01', 'image02', 'image03', 'image04']
Run Code Online (Sandbox Code Playgroud)

什么是最好的(Pythonic)方法呢?

python list

10
推荐指数
4
解决办法
1万
查看次数

如何将向量追加到 R 中的向量列表中?

这个问题与之前的问题相关,但那里的答案(使用c()函数)正是对我不起作用的

首先,我创建一个向量列表,然后创建一个附加向量。

a_list <- lapply(mtcars, as.integer)
junk <- c(1:length(a_list[[1]]))
Run Code Online (Sandbox Code Playgroud)

现在,如果使用c(a_list, junk)(如前面问题的答案中所建议的那样),我会得到一个与我所说的完全不同的答案a_list[["junk"]] <- junk(后者产生所需的结果)。似乎前一种方法添加的是as.list(junk).

如何添加junkusingc()而不将其转换为 的结果as.list(junk)

r

5
推荐指数
1
解决办法
1万
查看次数

“平”列表,包含列表列表到列表列表

这个问题不同于将列表/嵌套列表转换为不嵌套的列表(这会产生一组非常具体的响应,无法解决我的情况),也不同于许多“列表的扁平列表”答案。

我要列出一个列表,其中一些又是列表列表,然后“拉平”到列表列表(而不仅仅是列表!)。

作为一个具体的例子,我想从这里开始:

my_list_of_lists = [[1, 2, 3], [[9, 10], [8, 9, 10], [3, 4, 6]], [11, 12, 13]]
Run Code Online (Sandbox Code Playgroud)

对此

target_list_of_lists = [[1, 2, 3], [9, 10], [8, 9, 10], [3, 4, 6], [11, 12, 13]]
Run Code Online (Sandbox Code Playgroud)

(从视觉上讲,我想将外部列表中的所有[[]] 内部分别转换为[]。)

python list

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

标签 统计

python ×3

list ×2

clique ×1

connected-components ×1

plpython ×1

postgresql ×1

r ×1