使用列表中的每个值作为键值对中的键
Posted
技术标签:
【中文标题】使用列表中的每个值作为键值对中的键【英文标题】:Using each value in a list as key in key value pair 【发布时间】:2021-02-28 14:12:22 【问题描述】:我正在尝试编写一个自定义函数,该函数采用 RDD,每条记录小写,将其拆分为字符,然后将每条记录用作键值对中的键,其中值始终为 1。我已经编写了另外两个自定义函数,分别进行小写和字符拆分,to_lower() 和 to_characters()。
我尝试了几种不同的方法,但到目前为止,我只能将整个列表作为键,而不是每条记录都在其自己的对中。
#Attempt 1
def rdd_to_character_value_pairs(rdd):
lowerRDD = rdd.map(lambda x: to_lower(x))
characterRDD = lowerRDD.map(lambda x: to_characters(x))
pairedRDD = characterRDD.map(lambda x: ([char for char in characterRDD], 1))
return pairedRDD
#Attempt 2
def rdd_to_character_value_pairs(rdd):
lowerRDD = rdd.map(lambda x: to_lower(x))
characterRDD = lowerRDD.map(lambda x: to_characters(x))
for i in characterRDD.collect():
return ([char for char in characterRDD], 1)
#have also tried return (i,1)
我了解您无法迭代 RDD,但我也无法找到任何解决方法。
【问题讨论】:
欢迎来到 SO!查看tour。你的问题到底是什么?我不熟悉 RDD,所以我不确定您是在寻找特定于它们的东西还是像 building a dict from a list of keys with all the same value 这样更通用的东西。在任何情况下,提供带有示例输入、所需输出和实际输出的minimal reproducible example 以及删除关于to_lower
和to_characters
的内容也将有所帮助,因为它似乎与问题无关。你可以edit你的帖子。
顺便说一句,lambda x: func(x)
是多余的。只需改用func
。我相信这被称为 eta-reduction。
***.com/questions/36708338/…
【参考方案1】:
some_list = ["value1", "value2"]
some_dict = value_as_key: 'some_value' for value_as_key in some_list
输出:
'value1': 'some_value', 'value2': 'some_value'
【讨论】:
这个解决方案仍然给我一个 'PipelinedRDD' object is not iterable 错误以上是关于使用列表中的每个值作为键值对中的键的主要内容,如果未能解决你的问题,请参考以下文章
javascript中数组取值的问题,如何取出键值对中的值?
将一个字典内的内value转换为集合:返回一个数组,此数组中包含输入字典的键值对中的数组的所有元素(为NSArray添加category)