2014-11-10 3 views
2

У меня есть dict() со следующими dataчто-то эквивалентно лопаются (PHP) в Python

{0: 1703554, 1: 1143136, 2: 1877978, 3: 1593739, 4: 708961, 5: 708961, 6: 412752, 7: 266352, 8: 1164387, 9: 1164387} 

в PHP это можно сделать очень легко, используя implode(), чтобы получить запятую список всех значений как 1703554,1143136,1877978... Как это сделать, используя Python? Я попытался следующие print(','.join(str(id))), и он дал мне следующий вывод

{,0,:, ,1,7,0,3,5,5,4,,, ,1,:, ,1,1,4,3,1,3,6,,, ,2,:, ,1,8,7,7,9,7,8,,, ,3,:, ,1,5,9,3,7,3,9,,, ,4,:, ,7,0,8,9,6,1,,, ,5,:, ,7,0,8,9,6,1,,, ,6,:, ,4,1,2,7,5,2,,, ,7,:, ,2,6,6,3,5,2,,, ,8,:, ,1,1,6,4,3,8,7,,, ,9,:, ,1,1,6,4,3,8,7,} 

и я также использовал id.values(), но не работает, может быть, я использую его в неправильном направлении, пожалуйста, помогите !!!

здесь print(id.values)

[1703554, 1143136, 1877978, 1593739, 708961, 708961, 412752, 266352, 1164387, 1164387] 

и я хочу, как string

+0

Как вы использовали 'id.values ​​()'? Отправьте этот код. –

ответ

7

Вы должны преобразовать каждое значение в строку, и вы нужно объединить все эти строки запятыми:

print(','.join(str(v) for v in id.values())) 

или

print(','.join(map(str, id.values()))) 
+0

, но ваше решение идеально и очень просто в использовании new person like me –

+0

Я бы использовал первое решение, а вместо выражения генератора я использовал бы настоящий список, поскольку .join быстрее в списках в памяти. – bgusach

+0

@ ikaros45, что называется преждевременной оптимизацией. Уверенный, что список может быть быстрее (на 100-элементном словаре я время его около 1.7uS быстрее, что составляет 8% от времени выполнения), но если вы не приурочили его и не доказали, что это будет узким местом, вы должны предпочесть более четкий код, а не более быстрый код. – Duncan

4

Вы ищете dict.values()

>>> d = {0: 1703554, 1: 1143136, 2: 1877978, 3: 1593739, 4: 708961, 5: 708961, 6: 412752, 7: 266352, 8: 1164387, 9: 1164387} 
>>> d.values() 
[1703554, 1143136, 1877978, 1593739, 708961, 708961, 412752, 266352, 1164387, 1164387] 

Редактировать

Для получения их в виде строки, вы можете использовать строковое понимание:

[str(d[key]) for key in d] #or 
[str(v) for v in d.values()] #or 
[str(value) for _k, value in d.items()] 

Для печати в виде строки, вы можете сделать

', '.join(str(v) for v in d.values()) 
+0

Я хочу строку как вывод –

+0

'[str (x) для x в d.values ​​()]' –

+0

Это замечательный человек –

Смежные вопросы