#python #pyspark #word-count
Вопрос:
У меня есть кортеж:
wordsTuple = [(('431949',['python',
'print',
'hellow',
'world',
'at',
'py',
'file',
...]
Я хочу изменить его на [(python, 1), (print, 1) ...]
. Как я мог использовать только один код строки или какую-либо функцию из PySpark для достижения этой цели?
counts = wordsTuple._________________
Комментарии:
1. Не могли бы вы, пожалуйста, четко описать, как вы
wordsTuple
выглядите? Это простоtuple
илиlist
tuple
нет ? Описание показывает другой формат, в то время как заголовок показывает другой2. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.
Ответ №1:
Если вы действительно хотите фиксированную «1» в качестве второго элемента каждого кортежа, то это просто
wordsTuple = ('431949',['python', 'print', 'hellow', 'world', 'at', 'py', 'file'])
counts = [(x,1) for x in wordsTuple[1]]
counts
[('python', 1), ('print', 1), ('hellow', 1), ('world', 1), ('at', 1), ('py', 1), ('file', 1)]
Если вместо этого вы ищете количество вхождений каждого мира, проверьте collections.Counter
класс
Комментарии:
1. Из формата
wordsTuple
, добавленного в вопрос, он не выглядит как список кортежей[(('431949', [....]), ('', [...]))]
2. Ну, поскольку формат неясен в тексте вопроса, я выбрал тот, который указан в заголовке (и, наоборот, я доверял тексту, а не названию ожидаемого результата). В любом случае я предполагаю, что список, содержащий кортеж, содержащий все кортежи из 2 элементов, не так полезен 🙂 Возможно, это должен был быть список кортежей, а не один, как я предполагал.