【问题标题】:Replacing a key by its value in a Python dictionary [duplicate]用Python字典中的值替换键[重复]
【发布时间】:2019-04-15 10:03:55
【问题描述】:

我有一本像这样的字典:

my_dict = {"a":1, "e":2, "i":3, ...}

我还有一个包含不同字素的列表:

my_list = ["t", "a", "b", "l", "e", ...]

我想要做的是遍历列表中的每个字形,如果字形是字典的一部分,则将其替换为它的值。

我尝试使用my_dict.get(),尽管它需要一个参数(对应于给定值)。由于我不知道确切的值是什么,因为它会根据函数迭代的字素而变化,我该怎么做才能得到我想要的输出?

【问题讨论】:

  • 成为字典的一部分是什么意思,是它的键还是值?
  • my_dict.get(), though it requires an argument (which corresponds to a given value)。不,那不是真的。参数是一个,而不是一个值。
  • @Looioe 如果字形是关键。所以,在这种情况下,所有的“a”都应该替换为“1”,以此类推
  • my_dict.get() 需要一个 key,并且在缺少该键时返回一个默认值。在您的情况下,要返回的默认值的键都是字形本身。所以my_dict.get('a', 'a') 返回1,但my_dict.get('t', 't') 返回't'。使用[my_dict.get(grapheme, grapheme) for grapheme in my_list]

标签: python


【解决方案1】:

这样的东西有用吗?

result = [my_dict.get(grapheme, grapheme) for grapheme in my_list]

【讨论】:

    【解决方案2】:

    使用带有dict.get() 的列表理解,它接受两个参数:键和默认值(可选)。

    来自docs

    get(key[, default]): 如果键在字典中,则返回键的值,否则返回默认值。 如果没有给出默认值,则默认为None,因此该方法 从不提出KeyError

    my_dict = {"a": 1, "e": 2, "i": 3}
    my_list = ["t", "a", "b", "l", "e"]
    
    print([my_dict.get(x, x) for x in my_list])
    # ['t', 1, 'b', 'l', 2]
    

    【讨论】:

      猜你喜欢
      • 2019-11-11
      • 1970-01-01
      • 2014-07-12
      • 2020-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      相关资源
      最近更新 更多