【问题标题】:How to update keys in dictionary? [duplicate]如何更新字典中的键? [复制]
【发布时间】:2016-08-11 19:23:16
【问题描述】:

我有一个{} 和一个string -> list 关系,例如:

'Something.Default.' : ['a=initiator', 'b=00:00:00']
'Something.Session.' : ['b=acceptor', 'c=7039']

我想更改键以删除最后一个 . 'Something.Default.' 应变为 'Something.Default'

这显然是错误的,但它说明了我在寻找什么

for key in my_dictionary:
    key = key[:-1]

如何遍历每个键并更改它?

【问题讨论】:

  • 这些键是字符串吗,例如“Something.Default.”?
  • 建字典前能不能不修复数据来源?
  • 好吧,谁对我投了反对票 - 想知道为什么?

标签: python dictionary


【解决方案1】:

只需创建一个带有修改的新字典。

orig_dict = {'foox': 'bar', 'bazx': 'bat'}
new_dict = {key[:-1]: value for key, value in orig_dict.items()}

【讨论】:

    【解决方案2】:

    在迭代列表或字典的内容时,您不应更改可变对象,例如列表或字典,因此您最好创建一个新字典,在必要时修改相关键。如果它以句点('.')结尾,则使用三元将键截断一个字符,否则使用原始键。

    my_dictionary = {key[:-1] if key[-1] == '.' else key: value
                     for key, value in my_dictionary.iteritems()}  # Python 2
    

    新字典被重新分配给旧变量名my_dictionary

    【讨论】:

      【解决方案3】:

      获取每个密钥,删除最后一个 . 的新密钥,然后传输数据并删除该字典。

      for info in dict:
        if info[-1]=='.':
          dict[info[:-1]] = dict[info]
          del dict[info]
      

      【讨论】:

        【解决方案4】:

        Morgan Thrapp 的回答很到位。但这里有一点修改

        orig_dict = {key[:-1]: value for key, value in orig_dict.items()}
        

        您不需要创建新的 dict 对象。只是一个小的清理工作。

        【讨论】:

        • 这应该只是对他的回答的评论。
        • 确实如此。我这样做只是为了分解步骤,让读者更清楚。
        • 不幸的是,我没有足够的声誉来发表评论。走向巅峰
        • 确实创建了一个新的dict对象。它只是替换原始变量而不是使用新变量。
        猜你喜欢
        • 2012-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-07
        • 2019-07-15
        • 2018-11-11
        相关资源
        最近更新 更多