2015-09-28 1 views
1

Поэтому у меня есть список, который выглядит следующим образом:списка Wrap в пользовательскую строку на основе списка

mylist = ['100003028593816', '1784394111', '100008137385157', '100000462582000','100001633550680', '100000757743079'] 

(Этот список может меняться в зависимости от различных входов и т.д. Это просто пример)

Я хочу создать STRING из этого массива, который выглядит следующим образом.

string = '{"100003028593816":1,"1784394111":1,"100008137385157":1,"100000462582000":1,"100001633550680":1,"100000757743079":1}' 

(Примечание: Посмотрите, как они одни и те же значения, как указано выше, они просто завернутые по-разному, что, как они должны быть размещены так, я очень сильно хочу, чтобы принимать значения из массива и обручем.. их как { "значению1": 1, "значение2": 1} и т.д.

+0

Это похоже на JSON. Используйте 'import json'. Вы можете получить свой формат из 'collections.Counter (mylist)' (по крайней мере, я предполагаю, что это то, что означают значения '1'), а затем' json.dump (some_open_binary_fileobj) ' –

+0

Да, это похоже на json, но мне нужно, чтобы добавить: 1 после каждого значения. Так что это должно быть «value_from_array»: 1 и т. Д. – user1687621

+0

Опубликуйте код, который вы пробовали сделать, вы не можете просить людей кодоваться для вас, опубликовав определение проблемы – MohitC

ответ

3

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

'{%s}' % ','.join('"%s":1' % a for a in mylist) 
+1

отличный ответ, если для него важен порядок ... + 1 –

1
str(dict.fromkeys(mylist,1)) 

это хорошо ... но это нарушит ваш заказ (у dicts нет порядка, howev списки эр делают)

+0

Я думаю, что это должно быть str (dict.fromkeys (mylist) .keys()), чтобы не включать значения None. –

+0

там исправлено :) ... –

+1

str (OrderedDict.fromkeys (mylist) .keys()) сохраняет заказ –

0

Вот способ сделать это с помощью лямбда-функции:

'{' + ','.join(map(lambda x: '"' + x + '":1', mylist)) + '}' 

Ура!

+0

Traceback (последний последний звонок): Файл «friendchunk.py», строка 146, в '{' + ','. Join (map (lambda x: '"' + x + '": 1 ', друзья)) +'} ' Файл «friendchunk.py», строка 146, в ' {'+', '. join (map (lambda x:' "'+ x +'": 1 ', friends)) + '}' TypeError: не может объединить объекты 'str' и 'NoneType' – user1687621

+0

Конечно, он работает только со списками строк. В противном случае вам нужно будет преобразовать его в строку с помощью str (x), например: ''{' + ','. Join (map (lambda x: '"' + str (x) + '": 1' , mylist)) + '}' ' NoneTypes будет преобразован в строку' 'None''. – mescarra

1

Хотя я считаю, что сначала вы должны разместить код, который вы пробовали первый и не должны просить, чтобы spoonfeed, однако, вот ваш ответ, просто и понятно:

mylist = ['100003028593816', '1784394111', '100008137385157', '100000462582000','100001633550680', '100000757743079'] 
str='{' 
for i in range(len(mylist)): 
    str+='\"'+mylist[i]+'\":1,' 
str=str[:-1] #remove the last trailing comma 
str+='}' 
print str 

Выход:

{"100003028593816":1,"1784394111":1,"100008137385157":1,"100000462582000":1,"100001633550680":1,"100000757743079":1} 
+1

Этот ответ также является «n^2», который в мире python означает медленность для массивов даже нескольких тысяч элементов. – Ishamael

+0

Я согласен с вами, но по качеству вопроса я предположил, что он новичок в python и может использовать некоторую помощь в изучении логики программирования вместо того, чтобы пытаться понять лучшие пифонические способы. Можете ли вы добавить больше света о том, как его n^2? – MohitC

0

Преобразование массива в формат словаря

Вот решение, которое разбирает каждый индекс массива и кон Verts него в формат Dict:

string = "{\"" 
mylist = ['100003028593816', '1784394111', '100008137385157', '100000462582000','100001633550680', '100000757743079'] 

#The first n-1 array indicies 
for i in range(len(mylist)-1): 
    string += (mylist[i] + "\":1,\"") 

#last array index with closing bracket 
string += (mylist[len(mylist)-1] + "\":1}") 

Вот результат:

>>> string 
'{"100003028593816":1,"1784394111":1,"100008137385157":1,"100000462582000":1,"100001633550680":1,"100000757743079":1}' 

Обратите внимание, что \ "так, что мы можем напечатать кавычки внутри строки, так \": 1, \ " станет": 1 ", а последний \": 1} станет ": 1}.

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