python - 如何查找具有单个键的多个值的字典

标签 python csv dictionary

我有两个不同的词典:

  • 它显示品牌名称及其类型(即 Air 是品牌,鞋子是类型)

D1 = {'苹果': '手机', '三星': '手机', 'LG': '电视', '索尼': '电视'}

  • 这显示产品名称以及该产品的订单数量。

D2 = {'苹果': 3, '三星': 5, 'LG': 1, '索尼': 2}

我想创建一个新字典(不使用 pandas),以显示给定类型最受欢迎的品牌以及相同类型的订单数量。最受欢迎的定义是总订单最多的品牌。如果两个或多个品牌(具有给定类型)具有相同的订单数量,请选择任何一个。

我尝试合并两个字典,如下所示:

{'三星': ['手机', 5], '苹果': ['手机', 3], '索尼': ['电视', 2], 'LG': ['电视', 1]}

我不确定这是否是正确的方法。如果是这样,我怎样才能从这个字典中获取所需的数据?

我用来将两个字典合并为一个的代码:

d3={}
for key in (d2:keys()|d1.keys()):
  if key in d2: d3.setdefault(key, []).append(d2[key])
  if key in d1: d3.setdefault(key, []).append(d1[key])

预期结果:-

{'三星': 5, '索尼': 2}

最佳答案

聚会有点晚了,但我认为我的是迄今为止最简单的😜

D1 = {'apple': 'phone', 'samsung': 'phone', 'LG': 'TV', 'sony': 'TV'}
D2 = {'apple': 3, 'samsung': 5, 'LG': 1, 'sony': 2}

most_popular = {}

for brand, type_ in D1.items():
    orders = D2[brand]
    current_winner = most_popular.get(type_, None)
    if current_winner is None or orders > current_winner[1]:
        most_popular[type_] = (brand, orders)

result = {brand: orders for type_, (brand, orders) in most_popular.items()}

print(result)
# {'samsung': 5, 'sony': 2}

对于 D1 中的每个品牌类型对,它会检查是否没有该产品类型的条目(在这种情况下我们将其放入其中)如果该品牌的订单数量超过当前条目(在这种情况下,我们会使用新品牌更新该条目)。

末尾的行将此数据转换为结果的正确格式。

<小时/>

编辑:

设法将其扁平化为非常脏的单行代码(不计算 most_popular 的初始分配):

D1 = {'apple': 'phone', 'samsung': 'phone', 'LG': 'TV', 'sony': 'TV'}
D2 = {'apple': 3, 'samsung': 5, 'LG': 1, 'sony': 2}

most_popular = {}
result = {brand: orders for type_, (brand, orders) in {type_: (brand, D2[brand]) for brand, type_ in D1.items() if not most_popular.get(type_, None) or D2[brand] > most_popular.get(type_, None)[1]}.items()}

print(result)
# {'samsung': 5, 'sony': 2}

关于python - 如何查找具有单个键的多个值的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748849/

相关文章:

python - 如何将单个项目添加到 Pandas 系列

python - 来自导入类的对象的 cloudpickle 与在发生 pickle 的同一模块中定义的类

python - pdfkit - 有没有办法在将 HTML 转换为 pdf 之前更改它?

php - CSV 与 MySQL 性能对比

java - 是否有 API 可以使用 Java 将 Excel 文件转换为 CSV 文件?

python - 如何通过python将python字典存储到mysql DB

Python 结构,大小因对齐而改变。

java - 可以从中间读取csv文件吗?

haskell - 让 Data.Map 成为 Haskell 中的仿函数

Python - 唯一化(!)字典键