【问题标题】:how to iterate over a dictionary from value in an array and store in a new dictionary如何从数组中的值迭代字典并存储在新字典中
【发布时间】:2019-09-20 06:26:04
【问题描述】:

我有一个数组(Arr[]),对于数组中的每个项目,我希望它通过一个字典(specs{})并计算相应的值并将它们存储在一个新字典中,但要确定如何为这个新字典指定键和值 {results{})。

Arr=["saucer", "shoes"]
def calc(Arr, context, user_results):
    results = {}
    for x in Arr:
        if x == specs.keys():
            results = specs.values
            results.append(x : results)
    return results

specs = {'cup': 3,'saucer': 5, 'bag': 17, 'shoes': 9}

results={"saucer": 5, "shoes": 9}

【问题讨论】:

  • results 是一个字典。将键值对分配为:results['some_key'] = some_value
  • 那不是数组,那是列表
  • 是的,我的问题不清楚,只是将定义的数组移到代码部分。

标签: python loops dictionary store key-value


【解决方案1】:

您可以使用dict 推导式来构建一个新的dict 使用specs 中的项目

results = {key: specs[key] for key in Arr if key in specs}

【讨论】:

  • 我想你把Arrspecs搞混了:Arr是一个列表,specs是字典。
  • 我定义的数组不在代码部分,因此很混乱。谢谢你的回答:)
【解决方案2】:
In [9]: specs = {'cup': 3,'saucer': 5, 'bag': 17, 'shoes': 9}

In [10]: Arr=["saucer", "shoes"]

In [11]: R = {k: v for k, v in specs.items() if k in Arr}

In [12]: R
Out[12]: {'saucer': 5, 'shoes': 9}

【讨论】:

    【解决方案3】:

    只需检查列表并创建另一个字典

    specs = {'cup': 3,'saucer': 5, 'bag': 17, 'shoes': 9}
    
    Arr= ["saucer", "shoes"]
    
    em={}
    
    for item in Arr:
        if item in specs:
            em[item] = specs[item]
    print(em)
    
    {'saucer': 5, 'shoes': 9}  
    

    【讨论】:

      【解决方案4】:

      输入:

      Arr=["saucer", "shoes"]
      specs = {'cup': 3,'saucer': 5, 'bag': 17, 'shoes': 9}
      

      代码 #1:

      results = {item: specs.get(item, None) for item in Arr if item in specs}
      

      代码 #2:

      results = {key: value for key, value in specs.items() if key in Arr}
      

      结果:

      {'saucer': 5, 'shoes': 9}
      

      【讨论】:

        【解决方案5】:

        您可以使用函数itemgetter 从字典中获取值,并使用ziparr 列表中的值来构建新字典:

        from operator import itemgetter
        
        arr = ["saucer", "shoes"]
        
        specs = {'cup': 3, 'saucer': 5, 'bag': 17, 'shoes': 9}
        
        dict(zip(arr, itemgetter(*arr)(specs)))
        # {'saucer': 5, 'shoes': 9}
        

        【讨论】:

          猜你喜欢
          • 2016-06-17
          • 1970-01-01
          • 1970-01-01
          • 2021-01-24
          • 2023-01-24
          • 1970-01-01
          • 2021-02-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多