У меня есть входные данные, которые могут быть одним примитивом, списком или кортежем примитивов.
Я бы хотел свести его к списку, например так:
def flatten(values):
return list(values)
Нормальный случай будет сглажен (что-то не так)
Но если значения = '1234', я бы получил ['1', '2', '3', '4'], но я бы хотел ['1234']
И если значения = 1, я бы получил TypeError: объект 'int' не повторяется, но я бы хотел [1]
Есть ли элегантный способ сделать это?
Что я действительно хочу сделать, так это просто '\ t'.join (flatten (values))
Редактировать: Позвольте мне объяснить это лучше ...
Я хочу преобразовать двоичный файл последовательности hadoop в текстовый файл, разделенный плоской табуляцией, используя dumbo. Используя опцию формата вывода, -outputformat text
Dumbo - это оболочка Python для потоковой передачи Hadoop. Короче мне нужно написать функцию картографа:
def mapper (ключ, значения)
# сделать что-нибудь
выход k, v
где k - строка из первой части ключа, а value - строка, разделенная табуляцией, содержащая остаток ключа и значения в виде строк.
например:
input: (123, [1,2,3])
output: ('123', '1\t2\t\t3')
или более сложный:
input: ([123, 'abc'], [1,2,3])
output: ('123', 'abc\t1\t2\t\t3')
Ключ или значение ввода могут быть примитивом или списком / кортежем примитивов.
Мне бы хотелось, чтобы функция «сглаживала», которая могла справиться с чем угодно и возвращала список значений.
Для выходного значения я сделаю что-то вроде этого
v = '\ t'.join (список (str (s) для s в flatten (seq)))