在不使用循环的情况下迭代列表

时间:2017-08-21 19:20:29

标签: python list

我目前正在开发一个zabbix脚本,以便为用户添加他们的群组。一个用户有多个组,zabbix documentation的部分为:

"usrgrps": [
            { "usrgrpid": "7" },
            { "usrgrpid": "8" },
            { "usrgrpid": "9" }
           ]

我在7,8,9list[0], list[1], list[2]

的位置有一个我要替换的组ID列表

我尝试过使用.join方法:

mylist = ['12','13','14']
z =  '"usrgrpid":"'.join(mylist)
s = '"usrgrps": [{"%s"},]' % (z)

输出:

'"usrgrps": [{"12"usrgrpid":"13"usrgrpid":"14"},]'

3 个答案:

答案 0 :(得分:8)

您可以使用列表理解。

mylist = ['12', '13', '14']
d = {"usrgrps": [{'usrgrpid': uid} for uid in mylist]}
>>> d
{'usrgrps': [{'usrgrpid': '12'}, {'usrgrpid': '13'}, {'usrgrpid': '14'}]}

答案 1 :(得分:1)

只需构建如下数据:

s = '"usrgrps": [{}]'.format(",".join(map(lambda x: '{{"usrgrpid":"{}"}}'.format(x), mylist)))

>>> s
'"usrgrps": [{"usrgrpid":"12"},{"usrgrpid":"13"},{"usrgrpid":"14"}]'

让我们扩展我们在这里做的事情: 我们构建了一个字符串列表,如{"usrgrpid":"12"}

map(lambda x: '"usrgrpid":{}"'.format(x), mylist)

然后,我们只需,",".join分隔,即可获得{"usrgrpid":"12"},{"usrgrpid":"13"},{"usrgrpid":"14"}

之类的字符串

最后,只需将"usrgrps": [{}]字符串格式化为将前一个字符串复制到“list”中。

否则你需要使用json python库:

import json
data = json.dumps({"usrgrps": [{'usrgrpid': uid} for uid in mylist]})
data
'{"usrgrps": [{"usrgrpid": "12"}, {"usrgrpid": "13"}, {"usrgrpid": "14"}]}'

答案 2 :(得分:1)

ids=['12','13','14']    
{'usrgrps': list(map(lambda x: {'usrgrpid' : x}, ids))}