2017-06-01 85 views
-1

使用下面的代碼,我從API提取下面詞典:從所有字典值中刪除最後2個數字?

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'
+0

你要麼必須發佈更多的樣本數據和預期的輸出,或更準確地描述您的問題。我不知道你在問什麼。 – gonczor

+1

縮進不正確,你能正確格式化你的代碼嗎? – MSeifert

回答

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

而不是'join',你也可以使用['rsplit'](https://docs.python.org/3/library/stdtypes.html#str.rsplit),maxsplit爲1. – MSeifert

+0

@MSeifert當然。我試圖使用更多的分裂/加入只是爲了得到想法可以用字符串做什麼...我更新了我的答案與您的建議! – errata

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) 

現在如果你想要刪除多個值只是增加了不,這將通過從值移除最後三個字符做一個列表理解。

所以現在這會產生

{327: 'RHEL 6 64-bit', 355: 'RHEL 5 64-bit'} 
相關問題