【问题标题】:Assign values from list to dictionary without for loop in Python在 Python 中不使用 for 循环将值从列表分配到字典
【发布时间】:2021-10-01 08:37:20
【问题描述】:

不使用任何循环,我需要相同的输出。

我有两个列表:

groupVal = ["Staff 1","Staff 2"]
nameValue = ["ABC","XYZ"]

我的代码如下所示:

sdict = {"group": {}}
for index, item in enumerate(groupVal):
    sdict ['group'][item] = {"name": "Hi "+nameValue[index], "approval" :"yes"}

sdict 的输出:

{'group': {'Staff 1': {'name': 'Hi ABC', "approval" :"yes"}, 'Staff 2': {'name': 'Hi XYZ', "approval" :"yes"}}}

【问题讨论】:

  • 不可能遍历列表以创建没有任何循环的输出
  • 我认为 OP 只是意味着他需要某种理解。

标签: python python-3.x list dictionary


【解决方案1】:

更好的是,整个sdict 的一个衬里

groupVal = ["Staff 1","Staff 2"]
nameValue = ["ABC","XYZ"]

sdict = {'group': {item: {'name': 'Hi ' + value, 'approval': 'yes'} for item, value in zip(groupVal, nameValue)}}

sdict
{'group': {
    'Staff 1': {'name': 'Hi ABC', 'approval': 'yes'},
    'Staff 2': {'name': 'Hi XYZ', 'approval': 'yes'}
  }
}

【讨论】:

  • map可以用在这里吗?
  • 是的,只需在lambda中重写for循环生成的item部分即可。
  • 你能举个例子吗? @布兰登
  • @SoumeeGiri sdict = {'group': dict(map(lambda x: (x[0], {'name': 'Hi '+x[1], 'approval': 'yes'}), zip(groupVal, nameValue)))} 希望这会有所帮助;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 2018-02-16
  • 2016-04-24
  • 2017-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多