【问题标题】:Change multiple values in a dictionary based on current values根据当前值更改字典中的多个值
【发布时间】:2021-12-25 13:04:59
【问题描述】:

我有一个从文本文件创建的字典(这可行),但是我需要(键 = 单词,值 = 单词的类别)。在过去的 40 分钟里,我搜索了 Google 和我的“Python for Dummies”一书,但没有找到关于如何选择字典值中的一个类别并将它们全部更改为新值(同一字典,而不是创建一个新的)。

数据示例:

蓝色
番茄食品
电视对象

(蓝色、番茄和电视是键,颜色食物和物体是值)

假设我想在字典中将颜色更改为 1,食物更改为 2,对象更改为 3,即:

蓝色 1
番茄 2
电视 3

这些不是我的字典中唯一的条目,因此它需要一键更改某种类型的所有值。

有没有办法使用 for 循环和嵌套的 if elif 循环来实现这一点?

for value in objects.values():
    if value = "colour"
    .............

或者我完全失去了我需要做什么的想法?

【问题讨论】:

  • 使用 items() 枚举您的字典,它返回字典中每个条目的键和值。检查值并根据需要进行调整

标签: python dictionary for-loop if-statement


【解决方案1】:

你可以这样做:

D = {
    'Blue': 'colour',
    'Tomato': 'food',
    'Television': 'object',
    'Banana': 'fruit',
    'Red': 'colour'
}
VALUEMAP = {
    'colour': 1,
    'food': 2,
    'object': 3
}

for k, v in D.items():
    D[k] = VALUEMAP.get(v, v)

print(D)

{'蓝色':1,'番茄':2,'电视':3,'香蕉':'水果','红色':1}

注意,Banana 的值没有被修改,因为值映射中没有对应的条目

【讨论】:

    【解决方案2】:

    您需要为遇到的每个独特项目创建一个计数。然后将其存储在字典中。您可以从该字典中创建最终输出。

    objects = {
            "Blue": "colour",
            "Tomato": "food",
            "Television": "object"
    }
    unique_objects = {}
    unique_objects_count = 0
    
    for value in objects.values():
            if value not in unique_objects:
                    unique_objects_count += 1
                    unique_objects[value] = unique_objects_count
    for key, value in objects.items():
            objects[key] = unique_objects[value]
    print(objects)
    

    输出

    {'Blue': 1, 'Tomato': 2, 'Television': 3}
    

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 2016-11-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 2021-02-28
      相关资源
      最近更新 更多