Python中不使用for循环实现列表值到指定结构字典的赋值
实现方法
你可以通过以下两种不需要写显式for/while循环的方式实现完全一致的输出:
方案1:使用zip()+字典推导式
这是最简洁的写法:
groupVal = ["Staff 1","Staff 2"] nameValue = ["ABC","XYZ"] sdict = { "group": { item: {"name": "Hi " + name, "approval": "yes"} for item, name in zip(groupVal, nameValue) } }
方案2:使用map()+dict()构造
如果不想用到任何推导式里的循环语法,可以用这个方案,全程无循环关键字:
groupVal = ["Staff 1","Staff 2"] nameValue = ["ABC","XYZ"] def gen_kv_pair(item, name): return (item, {"name": "Hi " + name, "approval": "yes"}) sdict = {"group": dict(map(gen_kv_pair, groupVal, nameValue))}
输出验证
两种方案运行后得到的sdict结果和你原有循环实现的结果完全相同:
{'group': {'Staff 1': {'name': 'Hi ABC', 'approval': 'yes'}, 'Staff 2': {'name': 'Hi XYZ', 'approval': 'yes'}}}
原理解释
zip(groupVal, nameValue)会将两个列表的对应位置元素两两配对,生成可迭代的元组序列,避免你手动通过索引取值- 两种方案都没有用到显式的循环语句,所有遍历逻辑由Python内置函数/语法底层实现
内容的提问来源于stack exchange,提问作者Soumee Giri
相关产品推荐
相关产品推荐

