如果我用dict名称创建变量,如何在dict中查找值?

2024-05-17 16:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

代码更容易解释:

#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,我想我删除了它的所有引用,但如果我错过了什么,请忽略它。你知道吗


Tags: printdaydata1data2data3day1alldatadata4
3条回答

该行(65)应为:

print AllData[CurrentDay][day] 

出现此错误消息的原因是print CurrentDay[day]打印字符串CurrentDay中的第day个字符

为什么要使用dicts呢?您使用的键是列表索引的冗余替换项。你知道吗

例如:

AllData = [ [0, 1, 2, 3, 4, 5, 4, 3, 2, 1], [2, 3, 4, 5, 6, 6, 7, 4, 3],  ...  ]

您可以通过以下方式调用每个值:

AllData[Some_Day][Some_Data]

当然,如果你只是在摆弄字典对象,那么前面的海报有正确的解决方案。你知道吗

for day in AllData[CurrentDay]:

AllData[CurrentDay]dict。用day对其进行迭代会导致day接受所有的值。因此,'data1''data2'等等。这些都不是字符串中合适的索引。你知道吗

一旦你把它修好了,就把它拿出来

day = '%s' % (day)

也有一点。这是愚蠢的;你强迫值成为一个字符串,而这正是你不想要的。你知道吗

相关问题 更多 >