【问题标题】:How to remove a character from the values of a dictionary?如何从字典的值中删除一个字符?
【发布时间】:2017-12-04 01:17:30
【问题描述】:

dict_data = {'c': ['d\n', 'e\n'], 'm':['r\n','z\n','o']} 字典 dict_data 删除值中的 '\n' (顺序并不重要。):

应该返回:{'c': ['d', 'e'], 'm':['r','z','o']} 这是我尝试过的:

def dicts(dict_data):
    for k, v in dict_data.items():
        for i in v:
            f = i.strip('\n')
return f

我怎样才能在不做任何复杂的事情的情况下做到这一点?

【问题讨论】:

  • 在构建字典时执行此操作,而不是在它已经存在后对其进行修改。

标签: python-3.x python-2.7 list dictionary strip


【解决方案1】:

您的方法是正确的,但您可能认为在for i in v 中将i 更改为i.strip('\n') 可能会使更改出现在dict_data 中。事实并非如此。你正在做的是改变i,然后丢弃结果。

正确的方法是构建一个已剥离元素的列表并重新分配给相应的字典键:

def strip_dicts(dict_data):
    for k, v in dict_data.items():
        f = []
        for i in v:
             f.append(i.strip('\n'))
        dict_data[k] = f

当然,请记住,这会就地改变参数字典。

您可以使用推导式创建一个不同的函数来返回新字典:

def strip_dicts(d):
    return {k: [i.strip() for i in v] for k,v in d.items()}

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 2020-08-27
    • 2013-02-19
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    相关资源
    最近更新 更多