基于另一个字典和两个列表的输入输出一个字典

2024-09-27 19:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典和两个列表,并希望输出另一个字典,其中包含作为标题的单个列表和作为值的列表内容的总和,但是,我不知道如何才能做到这一点。你知道吗

results = {'Apple':'14.0', 'Banana':'12.0', 'Orange':'2.0', 'Pineapple':'9.0'}

ListA = ['Apple','Pineapple']
ListB = ['Banana','Orange']

输出:

dicttotal = {'ListA':'23.0', 'ListB':'14.0'}

编辑:我决定用熊猫来处理上述数据,因为我发现熊猫的简单性更适合我的理解水平。谢谢大家的帮助!你知道吗


Tags: 数据编辑标题内容apple列表字典results
3条回答

在python中,您可以使用列表理解使其易于阅读:

items_for_a = [float(v) for i, v in results.items() if i in ListA]
total_a = sum(items_for_a)

不过,要打印的dicttotal很奇怪。我认为你不想把变量名打印成字典键。你知道吗

在python2中,应该使用.iteritems()而不是.items()

您可以使用fllowing代码获取ListA的和。ListB也是这样。你自己试试

dicttotal = {}
ListASum = 0.0
ListBSum = 0.0
for item in ListA:
    if item in results:
        ListASum += float(results[item])
dicttotal['ListA'] = ListASum

Reduce和dictionary comprehension使用初始值创建dictionary,然后更新单个值。如果键名不是变量名的话,也许两者都能理解。你知道吗

from functools import reduce
d_total = {'ListA': str(reduce(lambda x, y: float(results[x]) + float(results[y]), lista))}
d_total['ListB'] = str(reduce(lambda x, y: float(results[x]) + float(results[y]), listb))
{'ListA': '23.0', 'ListB': '14.0'}

注:PEP-8 snake\u命名案例

相关问题 更多 >

    热门问题