[英]dictionary returns none when there should be a value python
我有一個小的樣本數據集:
import pandas as pd
df = {'ID': ['H576','H577','H578','H600', 'H700'],
'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE']}
df = pd.DataFrame(df)
我用熊貓讀了這篇文章,並將這兩列轉換為字典,其中“ ID”為鍵,“ CD”為值:
dictionary = df.set_index('ID')['CD'].to_dict()
因為我需要做其他事情(我不會詳細介紹,這是一個漫長的故事,而我的實際腳本是涉及許多其他事情的長腳本),所以我需要將字典另存為值-鍵對,相反:
reversedic = dict()
for key, val in dictionary.items():
reversedic.pop(val, key) #python 2.7 uses dic.append() but for the python I have which is 3.5, 'dict' object has no attribute 'append', so is pop the correct code?
稍后在較大的腳本中,當給定“ CD”值時,我將需要獲取“ ID”
z = reversedic.get('AAAAAAA')
print(z)
這應該返回了H576,但返回了“ none”。
為什么不直接:
reverseDict = {v:k for k,v in dictionary.iteritems()}
In [14]: reverseDict['AAAAAAA']
Out[14]: 'H576'
從有關dict.pop()的文檔中:
pop(key [,默認])
如果key在字典中,請刪除它並返回其值,否則返回default。 如果未提供默認值,並且字典中沒有key,則會引發KeyError。
如果要將鍵值對添加到字典中,請使用
reversedic[key] = val
pop()
返回傳遞給它的key
的值。 第二個參數是默認值,如果字典中不存在key
,則返回默認值。
您可以這樣做:
reversedic[key] = value
由於以這種方式創建第一個Dict
dictionary = df.set_index('ID')['CD'].to_dict()
為什么不?
reversedic = df.set_index('CD')['ID'].to_dict()
然后:
z = reversedic.get('AAAAAAA')
print(z)
要么
z = reversedic['AAAAAAA']
print(z)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.