【问题标题】:Delete spaces in dictionary values python删除字典值python中的空格
【发布时间】:2021-06-19 21:50:31
【问题描述】:

我正在从外包中读取数据。数据具有“名称”和“带有警告的值”,因此我将它们以如下方式放入字典中

d[data[i:i+6]] = data[i+8:i+17], data[i+25:i+36]

因此,最后我的 dict 为;

{'GPT-P ': ('169      ', 'H          '), 'GOT-P ': ('47       ', '           '), .....

如上所示,键和值都可能包含不必要的空格。 我能够克服键中的空格;

d = {x.replace(' ',''): v
     for x, v in d.items()}

但似乎无法管理类似的值。我尝试使用 d.values(),但它会修剪键名,并且仅适用于其中 1 个值。

您能帮我了解如何删除多个 (在这种特殊情况下为 2 个值)的空间并最终得到类似的东西;

{'GPT-P': ('169', 'H'), 'GOT-P ': ('47', ''), .....

谢谢。保持安全和健康

【问题讨论】:

  • 你想删除空格让' 1 2 3 '变成'123'还是去掉空格让' 1 2 3 '变成'1 2 3'

标签: python dictionary


【解决方案1】:

您还需要在 v 值中进行空格替换,但是
在您的情况下,您的字典中的值似乎是元组

我猜你会想要删除每个元组的所有元素中的空格,所以你需要在这里进行第二次迭代。你可以这样做:

d = {'GPT-P ': ('169      ', 'H          '), 'GOT-P ': ('47       ', '           ')}

{x.replace(' ', ''): tuple(w.replace(' ', '') for w in v) for x, v in d.items()}

返回:

{'GPT-P': ('169', 'H'), 'GOT-P': ('47', '')}

请注意,字典理解中有列表(或元组)理解 tuple(w.replace(' ', '') for w in v)

【讨论】:

    【解决方案2】:

    给定:

    DoT={'GPT-P ': ('169      ', 'H          '), 'GOT-P ': ('47       ', '           ')}
    

    由于您将字符串元组作为值,因此您需要将.strip() 应用于元组中的每个字符串:

    >>> tuple(e.strip() for e in ('47       ', '           '))
    ('47', '')
    

    将其应用于字典理解中的每个键、值,然后就可以了:

    >>> {k.strip():tuple(e.strip() for e in t) for k,t in DoT.items()}
    {'GPT-P': ('169', 'H'), 'GOT-P': ('47', '')}
    

    您在尝试中使用了.replace(' ','')。这将替换所有空格:

    >>> '     1    2    3    '.replace(' ','')
    '123'
    

    更典型的是使用.strips()之一:

    >>> '     1    2    3    '.strip()
    '1    2    3'
    >>> '     1    2    3    '.lstrip()
    '1    2    3    '
    >>> '     1    2    3    '.rstrip()
    '     1    2    3'
    

    您可以在我上面使用的理解中使用.replace 或任何.strips()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      相关资源
      最近更新 更多