Python添加2个带有常用键的列表到字典

Posted

技术标签:

【中文标题】Python添加2个带有常用键的列表到字典【英文标题】:Python Adding 2 list with common keys to dictionary 【发布时间】:2017-02-22 03:26:22 【问题描述】:

我是 python 新手。我正在从 csvfile 中提取两行。

Foodlist = ['apple, carrot, banana','chocolate, apple', 'strawberry, orange, carrot']

数量列表对应其顺序中的每一项。

Quantity = ['1,2,1','2,5','1,2']

如何将两个带有公共键的列表合并到字典中?我尝试拆分和加入,但由于公共键,数量被覆盖。

我正在尝试输出:

'Apple: totalquantity','Banana: totalquantity', 
 'Carrot: totalquantity','Chocolate: totalquantity',
 'orange: totalquantity', 'strawberry: totalquantity'

请帮忙!

无论如何我可以提取食品的 csvfile 行并在字典中分配其值吗?

对于cvs文件如下:

第 1 行: 苹果、胡萝卜、香蕉 巧克力,苹果 草莓、橙子、胡萝卜

第 2 行: 1,2,1 2,5 1,2

【问题讨论】:

这能回答你的问题吗? ***.com/questions/11011756/… Foodlist 中列出的食物比Quantity 中的数字还多。这是故意的吗?此外,您应该避免使用大写标识符命名类型以外的内容。 【参考方案1】:

您可以使用Counter 来聚合结果:

from collections import Counter

Foodlist = ['apple, carrot, banana','chocolate, apple', 'strawberry, orange, carrot']
Quantity = ['1,2,1','2,5','1,2']
res = Counter()

for f_list, q_list in zip(Foodlist, Quantity):
    for f, q in zip(f_list.split(', '), q_list.split(',')):
        res[f] += int(q)

print(res)

输出:

Counter('apple': 6, 'chocolate': 2, 'carrot': 2, 'orange': 2, 'strawberry': 1, 'banana': 1)

【讨论】:

【参考方案2】:

使用 collections.default_dict 设置字典来计算您的项目。

In [1]: from collections import defaultdict

In [2]: items = defaultdict(int)

In [3]: Foodlist = ['apple, carrot, banana','chocolate, apple', 'strawberry, or
   ...: ange, carrot']

In [4]: Quantity = ['1,2,1','2,5','1,2']

In [5]: for which, counts in zip(Foodlist, Quantity):
   ...:     foods = [w.strip() for w in which.split(',')]  # Split the foods and remove trailing spaces
   ...:     nums = [int(c) for c in counts.split(',')]  # Split the counts are convert to ints
   ...:     for f, n in zip(foods, nums):
   ...:         items[f] += n
   ...:

In [6]: items
Out[6]:
defaultdict(int,
            'apple': 6,
             'banana': 1,
             'carrot': 2,
             'chocolate': 2,
             'orange': 2,
             'strawberry': 1)

In [7]:

【讨论】:

以上是关于Python添加2个带有常用键的列表到字典的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有字典列表的熊猫列拆分为每个键的单独列

添加键的值并按在 Python 中的字典列表中出现的键对其进行排序

python 字典 与 集合 的特点,及它们背后的散列表

如何展平Python字典中键的值(元组列表列表)?

如何将带有图例键的数据表添加到 C# 中的 MS 图表?

字典列表键的Python总和[重复]