2024-09-30 10:28:36 发布
网友
我很好奇是否有一个内置的python连接函数,比如unix版本(参见http://linux.about.com/library/cmd/blcmdl_join.htm)。我知道这个功能是通过内置的sqlite3模块和一些其他模块(比如pytables)来实现的。在
抱歉,如果这是一个基本的问题,但我发现搜索“python join”和相关查询被标准python join函数严重污染了。而且,如果没有这样的功能,我也不会指望能这么容易地找到这些信息。在
没有
如果在Unix上运行Python,可以使用subprocess模块在外部运行命令。在
subprocess
这里有一个python版本的join函数,不处理所有可能的错误情况。但是展示了基本的想法。在
# usage join(open('f1.txt'), open('f2.txt')) def join(fd_a, fd_b) : result = [] la = fd_a.readline() lb = fd_b.readline() while la and lb : start_a, rest_a = la.split(' ', 1) start_b, rest_b = lb.split(' ', 1) if cmp(start_a, start_b) == 0 : result.append([start_a, [rest_a, rest_b]]) la = fd_a.readline() lb = fd_b.readline() elif cmp(start_a, start_b) < 0 : la = fd_a.readline() else : lb = fd_b.readline() return result
可以使用字典轻松模拟联接:
d1 = {"a": 1, "b": 2} d2 = {"b": 3, "c": 4} print dict((key, (d1[key], d2[key])) for key in d1 if key in d2) {'b': (2, 3)}
或者,python3.x中的最后一行:
(2.x行在Python3.x中也可以工作,但是使用&来获得字典键的交集可能会加快速度,如果d1的键只有一小部分在交集中)
&
d1
我不知道在一个函数调用中是否有一个内置的函数来实现这一点。在
没有
如果在Unix上运行Python,可以使用
subprocess
模块在外部运行命令。在这里有一个python版本的join函数,不处理所有可能的错误情况。但是展示了基本的想法。在
可以使用字典轻松模拟联接:
或者,python3.x中的最后一行:
^{pr2}$(2.x行在Python3.x中也可以工作,但是使用
&
来获得字典键的交集可能会加快速度,如果d1
的键只有一小部分在交集中)我不知道在一个函数调用中是否有一个内置的函数来实现这一点。在
相关问题 更多 >
编程相关推荐