根据列表将列表包装到自定义字符串中

时间:2015-09-28 23:35:52

标签: python list

所以我有一个如下所示的列表:

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

(此列表可能因不同的输入而异,等等。这只是一个例子)

我想从该数组创建一个如下所示的STRING。

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

(注意:看看它们是如何与上面相同的值,它们只是以不同方式包装。这就是他们需要如何发布。所以我非常想从数组中获取值并将它们包装为{" value1":1," value2":1}等。

5 个答案:

答案 0 :(得分:3)

使用列表理解这是一种有点难以理解的方法:

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

答案 1 :(得分:1)

str(dict.fromkeys(mylist,1))

很好......但它会破坏你的排序(dicts没有顺序,但是列表没有顺序)

答案 2 :(得分:1)

虽然我认为您应该首先发布您先尝试过的代码而不应该请求勺子,但是,这里的答案简单明了:

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}

答案 3 :(得分:0)

这是使用lambda函数执行此操作的方法:

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

干杯!

答案 4 :(得分:0)

将数组转换为字典格式

这是一个解析数组的每个索引并将其转换为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}。