如何从数组中的值迭代字典并存储在新字典中

问题描述 投票:1回答:5

我有一个数组(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}

python loops dictionary store key-value
5个回答
4
投票

你可以使用dict理解来建立一个新的dict使用specs中的项目

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

1
投票
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}

0
投票

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

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}  

0
投票

输入:

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}

0
投票

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

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}
© www.soinside.com 2019 - 2024. All rights reserved.