我不明白为什么列表不会附加在pyspark。有人可以帮我看看我的代码吗?如果else语句在for循环附加到列表
import json
input_file = sc.textFile("data.json")
def extract_func(data):
c_list = []
neighborhoods = data.get('neighborhoods', None)
for n in neighborhoods:
if n == []:
c_list.append('Unknown')
else:
c_list.append(n)
return c_list
实例数据录入:
{'attributes': {'Accepts Credit Cards': True,
'city': 'Edinburgh',
'name': 'Conan Doyle',
'neighborhoods': [],
'stars': 3.5,
'state': 'EDH'}}
这个例子项不都表现出了社区,所以我想追加“未知”的名单。其他一些数据项有多个邻域,所以我想通过for循环逐个追加它们。
当我运行dat = input_file.map(lambda line: json.loads(line))
后跟dat = dat.flatMap(extract_func)
,它不会给我Unknown
邻域条目。
正在检查几小时,无法弄清楚什么是错,我在这里错过了什么?
你能解释一下你所说的“列表中没有追加”是什么意思?什么应该附加到什么?你正在调用'data.get()',但数据没有被定义。数据应该是什么?你指的是什么'dat'变量? – charlesreid1
如果'n'正在迭代字典,它将被设置为字典的键值,而不是值。 –
在你的'data'中,''neighborhoods'是'attributes'的子键,所以你必须先从它得到第一个和''neighborhoods'。 –