因此,現在我有一個字典dataDict
,它具有值爲'node-key'
的鍵,其中節點是特定的csv文件頭,鍵是可能存在或不存在於每個文件中的字段。我有一個normalDict['Time']
需要從dataDict[node-'Time']
所有時間,並把他們整理。我想爲dataDict
中的每個'node-key'
條目製作一個規範化字典。於是我通過normalDict['Time']
值迭代,如果i
爲dataDict[nodeTime]
,我想在同一位置添加dataDict[nodeKey]
價值爲dataDict[nodeTime]
到normalDict[nodeKey]
,而如果normalDict['Time']
值不在dataDict[nodeTime]
,我想追加一個'nan'
到normalDict[nodeKey]
。Python:只需要字典中的特定值;正常化節點密鑰對
(我的腳本目前的圖dataDict [nodeKey] vs dataDict [nodeTime],我想規範化時間以包括所有節點的時間在一個軸上,並添加'nan的dataDict [nodeKey]到值沒有發生)
編輯:澄清: 所以可以說我有
所以說
dataDict['1-Time'] = ['12:00','1:00','2:00']
dataDict['2-Time'] = ['12:30','1:30','2:30','3:30']
我也有一個具有相同數目的項鍵的值,列在兩次這樣:
dataDict['1-lattitude']=['0','1','2']
dataDict['2-lattitude']= ['1','2','3','3']
而且
normalDict['Time'] = ['12:00','12:30','1:00','1:30','2:00','2:30','3:30']
話,我想有
normalDict['1-lattitude'] = [ '0', 'nan', '1', 'nan', 2', 'nan', 'nan']`
和
normalDict['2-lattitude'] = ['nan', '1', 'nan', '2', 'nan', '3', '3']
因此,在normalDict每個按鍵都有價值爲等量在normalDict['Time']
這裏是我的方法,我已經評論了我的頭腦中有意義的特定行,以便如何訪問特定鍵的單個項目,但是我知道由於解包錯誤導致它不正確。任何幫助將不勝感激,因爲我可能會遇到與後面的腳本這個問題。
def normalizeDataByField(self, fileName,keyNames):
#this normalizes time how I want
setTimes = set()
listTimes = []
tupleTime=[]
for i in range(len(fileName)):
node = self.deriveNodeName(fileName[i])
nodeTime= '%s-Time' %(node)
for key in dataDict:
if 'Time' in key and node in key:
for i in dataDict[key]:
setTimes.add(i)
listTimes+=setTimes
listTimes.sort()
normalDict['Time'] = listTimes
for a in range(len(fileName)):
node = node = self.deriveNodeName(fileName[a])
nodeTime='%s-Time' %(node)
for key in keyNames:
nodeKey= '%s-%s' %(node,key)
for i,j in normalDict['Time'],dataDict[nodeKey]: #this is my flaw in logic as I get ValueError: too many values to unpack
print "looking for %s in dataDict[nodeTime]" %(i)
if i in dataDict[nodeTime]:
print "%s found in dataDict[%s]" %(i,nodeTime)
normalDict[nodeKey].append(j)
else:
print "%s not found in dataDict[%s]. Appending 'nan'" %(i,nodeTime)
normalDict[nodeKey].append('nan')
這個問題是措辭還不是很清楚。你是否正在尋找像'normalDict [t] = {k:dataDict.get(「%s-%s」%(t,k),None)for k in keys]}? – badp
我編輯了我的帖子並添加了我的目標的說明。我需要找到一種方法來添加與normalDict ['Time']相同數量的值來創建normalDict [nodeKey]條目,但我需要確保在正確的位置添加nan以匹配它們對應的nodeTime。 – Kevin