我不明白爲什麼列表不會附加在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'。 –