从所有字典值中删除最后2个数字?

时间:2017-06-01 13:52:11

标签: python

使用以下代码我从API中提取以下字典:

for cv_ver in cv_versions_dic['results']:
rhel_ver = cv_ver['id']
cv_name = cv_ver['name']
if qq_cv(cv_name):
    cv_name = cv_ver['name']
    #print(cv_name)
    cv_ver_dic.update({rhel_ver: cv_name})
print(cv_ver_dic)

输出:

{327: 'RHEL 6 64-bit 1.0', 355: 'RHEL 5 64-bit 4.0'}

还有更多字典值,只发布一个样本。

我想从每个值中删除最后一个数字。即:

  • 从第一个值1.0中移除并离开'RHEL 6 64-bit'
  • 从第二个值4.0中移除并离开'RHEL 5 64-bit'

2 个答案:

答案 0 :(得分:2)

类似的东西:

cv_name = ' '.join(cv_ver['name'].split(' ')[:-1])

应该这样做......

说明:

首先,我们按空格字符分割字符串 - cv_ver['name'].split(' ')
返回除最后一个元素之外的所有元素 - [:-1]
最后,将这些列表元素与空格字符联系起来 - ' '.join()

作为MSeifert pointed out,替代方案可以是rsplit()的版本:

cv_name = cv_ver['name'].rsplit(' ', 1)[0]

答案 1 :(得分:1)

您可以对类似

这样的字符串的值使用列表推导
for cv_ver in cv_versions_dic['results']:
    cv_ver_dic.update({cv_ver['id']:cv_ver['name'][:-3].strip()})
print(cv_ver_dic)

现在这将通过从值中删除最后三个字符来执行列表理解,如果您想要删除更多值,只需增加no。

所以现在这会产生

{327: 'RHEL 6 64-bit', 355: 'RHEL 5 64-bit'}