小编Pra*_*ini的帖子

(PySpark)reduceByKey之后的嵌套列表

我确信这很简单,但我找不到与此有关的任何内容.

我的代码很简单:

... 
stream = stream.map(mapper) 
stream = stream.reduceByKey(reducer) 
... 
Run Code Online (Sandbox Code Playgroud)

没什么特别的.毕竟,输出看起来像这样:

... 
key1  value1 
key2  [value2, value3] 
key3  [[value4, value5], value6] 
... 
Run Code Online (Sandbox Code Playgroud)

等等.所以,有时我得到一个平坦的值(如果它是单一的).有时 - 嵌套列表可能非常非常深(在我的简单测试数据上它是3级深度).

我尝试通过源搜索"flat"之类的东西 - 但是只找到了flatMap方法(据我所知)并不是我需要的方法.

我不知道为什么这些列表是嵌套的.我的猜测是,它们是由不同的流程(工人?)处理的,然后在没有展平的情况下连接在一起.

当然,我可以用Python编写一个代码,它将展开该列表并将其展平.但我认为这不是一个正常的情况 - 我认为几乎每个人都需要一个平坦的输出.

itertools.chain停止在第一个找到的非可迭代值上展开.换句话说,它仍然需要一些编码(前一段).

那么 - 如何使用PySpark的本地方法展平列表?

谢谢

python apache-spark

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

如何从用户那里获取输入以在字典中找到键并输出其值?

我正在用python创建一个简单的S-Box,它包含所有可能的3位组合作为密钥,并包含其加密组合作为其值。

它基本上会从用户那里获取3位,然后将其针对我定义的S-Box表运行,然后它将找到与用户输入位匹配的密钥并输出其加密值

下面的示例代码,不是完整的代码;

SBox= { "000": "110","001": "010","010":"000","011": "100" }

inputBits= input("Enter 3 bit pattern: ")

if inputBits == "000":
        print("Encrypted combo: ", SBox["000"])
Run Code Online (Sandbox Code Playgroud)

输出:

Enter 3 bit pattern: 000
Encrypted combo: 110
Run Code Online (Sandbox Code Playgroud)

我希望能够更有效地执行此操作,即:不必为每个可能的组合都使用if,它类似于将输入字符串与双数字键匹配。

任何帮助表示赞赏!

python dictionary python-3.x

2
推荐指数
1
解决办法
51
查看次数

为什么这个简单的Pythion脚本失败了?Python 2.6.6

这是脚本

#!/usr/bin/python

class LEG(Structure): 
        _fields_ = [("distance_sm", c_float), ("distance_nm", c_float)]
Run Code Online (Sandbox Code Playgroud)

这是我运行时得到的.

Traceback (most recent call last):
  File "./test.py", line 3, in <module>
    class LEG(Structure): 
NameError: name 'Structure' is not defined
Run Code Online (Sandbox Code Playgroud)

是的,蟒蛇新品,谢谢你的帮助

python

-1
推荐指数
1
解决办法
142
查看次数

标签 统计

python ×3

apache-spark ×1

dictionary ×1

python-3.x ×1