【问题标题】:Python - Map with Split Option output DifferencePython - 具有拆分选项输出差异的映射
【发布时间】:2019-11-11 14:59:56
【问题描述】:

我是 python 的新手,只是想了解为什么输出是这样的。

1)

strr=['asdfasdf','asdf','sdf','sdf']

stak=map(lambda l:l.split(','),strr)

print(stak)

当我执行第一组时,输出的格式如下,这是可以理解的 因为,拆分返回一个列表,收集也返回一个列表,因此里面的列表 列表

[['asdfasdf'], ['asdf'], ['sdf'], ['sdf']]

2)

str='asdfasdf,asdf,sdf,sdf'

sc.parallelize(str).map(lambda l:l.split(',')).collect()

print(str)

现在检查第二种情况,下面的动作也应该和上面一样,应该有 给出类似的输出。但它给出的输出如下。什么我不明白,为什么有 字符被分成单独的列表。谁能解释一下为什么不同 输出 1 和 2?

[['a'],
 ['s'],
 ['d'],
 ['f'],
 ['a'],
 ['s'],
 ['d'],
 ['f'],
 ['', ''],
 ['a'],
 ['s'],
 ['d'],
 ['f'],
 ['', ''],
 ['s'],
 ['d'],
 ['f'],
 ['', ''],
 ['s'],
 ['d'],
 ['f']]

【问题讨论】:

  • "sc.parallelize" 似乎是外部库的一部分。您应该在问题中添加适当的标签。

标签: python python-3.x list dictionary split


【解决方案1】:
  1. split 在 Python 中返回 list,因为列表中没有元素具有 comma (,),它会为每个值返回列表,其中只有一个元素 值本身,因为您正在映射拆分到列表中的每个元素。输出是列表列表

  2. 由于您在字符串上使用并行化,它将字符串分解为字符的 RDD,然后在每个字符上映射拆分,这再次返回您的列表列表,如 #1 中所述。只有当它遇到逗号作为字符时,您才会得到带有两个空字符串的列表并将其拆分。 欲了解更多信息check this

【讨论】:

    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多