gpt4 book ai didi

python - python join函数的使用

转载 作者:行者123 更新时间:2023-12-02 22:01:17 25 4
gpt4 key购买 nike

我使用join函数在hadoop中加入python中的列表。但我发现它与在一台机器上使用join不同。任何人都遇到过这个问题。
代码是这样的

def reducer():
(last_key,last_index,list) = ("","","")
for line in sys.stdin:
line = line.strip()
fields = line.split("\t")
if len(fields) < 3:
continue
cur_key = fields[0]
cur_index = fields[1]
cur_list = fields[2]
if last_key !="" and last_key!=cur_key:
print "%s\t%s\t%s" %(last_key,last_index,list)
list = ""
elif last_index !="" and last_index!=cur_index:
print "%s\t%s\t%s" %(last_key,last_index,list)
list = ""
last_key = cur_key
last_index = cur_index
if list != "":
list = '_'.join(cur_list)
else:
list = cur_list
print "%s\t%s\t%s" %(last_key,last_index,list)

我使用 join 代替“+”,因为它更有效。但是在hadoop和一台机器上运行时结果不同。如何解决它。

映射器输出是
键\tpos\t0000000000594720
键\tpos\t0000000000870960
cat mapper|sort|python reducer.py 结果是 key\tpos\tt0000000000594720_0000000000870960 是对的
但是在hadoop中,结果是0_0_0_0_0_0_0_0_0_0_8_7_0_9_6_0,太奇怪了。
Hadoop不能支持join功能?

最佳答案

我猜这个问题是因为你如何调用 join -

list = '_'.join(cur_list)

这将加入列表 cur_list ,每个元素之间都有一个 _ 。所以根据你的代码,你得到了正确的结果。

如果您不希望 cur_list 中的字符串之间有任何内容,请使用空字符串加入 -
list = ''.join(cur_list)

关于python - python join函数的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32089197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com