代码更容易解释:
#test data
Day1={
'data1':0,
'data2': 1,
'data3': 2,
'data4': 3,
'data5': 4,
'data6': 5,
'data7': 4,
'data8': 3,
'data9': 2,
'data10': 1}
Day2= {
'data1': 2,
'data2': 3,
'data3': 4,
'data4': 5,
'data5': 6,
'data6': 6,
'data7': 7,
'data8': 6,
'data9': 4,
'data10': 3}
Day3= {
'data1': 2,
'data2': 4,
'data3': 5,
'data4': 6,
'data5': 7,
'data6': 6,
'data7': 8,
'data8': 6,
'data9': 5,
'data10': 4}
Day4= {
'data1': 2,
'data2': 4,
'data3': 5,
'data4': 6,
'data5': 7,
'data6': 6,
'data7': 6,
'data8': 8,
'data9': 5,
'data10': 4}
AllData= {'Day1':Day1,'Day2':Day2,'Day3':Day3,'Day4':Day4}
#Number of items in AllData dictionary
AllDataSize = len(AllData)
CurrentDayCounter=0
while CurrentDayCounter < AllDataSize:
CurrentDayCounter=CurrentDayCounter+1
CurrentDay = 'Day%s' % (CurrentDayCounter)
#print AllData[CurrentDay]
#add the nodes
for day in AllData[CurrentDay]:
print CurrentDay
day = "%s" % (day)
print CurrentDay[day] #does not work gives an error: TypeError: string indices must be integers, not str
print CurrentDay[1] #works by providing a result 'a', which is the second letter in Day
#print 'For ', CurrentDay, ' subgroup ', day,' contains ', CurrentDay[day], ' has been added to graph.'
dayName = "%s-%s" % (CurrentDay, Day1[day])
#Do not create edges if its the first day
if CurrentDay != "Day1":
yesterday = CurrentDayCounter - 1
print 'today is ', CurrentDayCounter, ' and yesterday is ', yesterday
当我打印CurrentDay[day]
时,我得到一个错误:TypeError: string indices must be integers, not str
但是CurrentDay[1]给出了一个a的结果(这是变量的中间字母)。我想用这个变量来搜索字典,而不是调出一个字母的位置。你知道吗
我怀疑我这样做是完全错误的,那么有没有正确的方法呢?你知道吗
谢谢! p、 很抱歉代码不好,我只是在玩networkx,我想我删除了它的所有引用,但如果我错过了什么,请忽略它。你知道吗
该行(65)应为:
出现此错误消息的原因是
print CurrentDay[day]
打印字符串CurrentDay
中的第day
个字符为什么要使用dicts呢?您使用的键是列表索引的冗余替换项。你知道吗
例如:
您可以通过以下方式调用每个值:
当然,如果你只是在摆弄字典对象,那么前面的海报有正确的解决方案。你知道吗
AllData[CurrentDay]
是dict
。用day
对其进行迭代会导致day
接受所有的键值。因此,'data1'
,'data2'
等等。这些都不是字符串中合适的索引。你知道吗一旦你把它修好了,就把它拿出来
也有一点。这是愚蠢的;你强迫值成为一个字符串,而这正是你不想要的。你知道吗
相关问题 更多 >
编程相关推荐