繁体   English   中英

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

[英]Iterate through a list without using a loop

我目前正在使用zabbix脚本来添加用户组。 一个用户有许多组, zabbix文档的部分为:

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

我有一个组ID的列表,我想用7,8,9替换list[0], list[1], list[2]

我尝试过使用.join方法:

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

输出:

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

您可以使用列表理解。

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

只需构建如下数据:

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"}]}'
ids=['12','13','14']    
{'usrgrps': list(map(lambda x: {'usrgrpid' : x}, ids))}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM