Python 如何计算特定周数之间的周数?

Python 如何计算特定周数之间的周数?,python,dictionary,count,Python,Dictionary,Count,我有下面的数据格式。它是一个字典,以名称作为键,以周数列表作为值 {'Mali': [17, 16, 23, 18, 17, 16, 17, 18, 16], 'Gooki': [7, 8, 8, 15, 7, 7, 8], 'Piata': [85], 'Goerge': [82], 'Samoo': [106, 55], 'Marria: [101,39]} 我想计算周数之间的周数,并用周数而不是周数更改dictionary的值。这意味着,例如,在名称“Samoo”中,

我有下面的数据格式。它是一个字典,以名称作为键,以周数列表作为值

{'Mali': [17, 16, 23, 18, 17, 16, 17, 18, 16],
 'Gooki': [7, 8, 8, 15, 7, 7, 8],
 'Piata': [85],     
 'Goerge': [82],
 'Samoo': [106, 55],
 'Marria: [101,39]}
我想计算周数之间的周数,并用周数而不是周数更改dictionary的值。这意味着,例如,在名称“Samoo”中,我有第55周和第106周。我希望我的代码计算这两周加上它们之间的周数(等于52周),并将其设置为dictionary的值

我有下面的代码,但是我不确定上面的代码是否有效

datedict = defaultdict(set)
with open('d:/info.csv', 'r') as csvfile:
    filereader = csv.reader(csvfile, 'excel')

    #passing the header
    read_header = False
    start_date=date(year=2009,month=1,day=1)
    #print((seen_date - start_date).days)
    tdict = {}
    for row in filereader: 
        if not read_header:
            read_header = True
            continue

# reading the rest rows
        name,firstseen = row[0],row[3]
        try:
            seen_date = datetime.datetime.strptime(firstseen, '%d/%m/%Y').date()               
            deltadays = (seen_date-start_date).days
            deltaweeks = deltadays/7 + 1
            key = name
            currentvalue = tdict.get(key, set())
            currentvalue.add(deltaweeks)
            tdict[key] = currentvalue

        except ValueError:
            print('Date value error')
            pass

pprint.pprint(tdict)


有人能帮我吗?

你的字典里有两次
Samoo
。这是有意的吗?另外,
106-55
不等于
51
?对不起,我可能误解了你的意思question@Haidro我想他也想数一数第106周的比赛,所以那将是
+1
@jamylak啊,这似乎是合理的。事实上,我认为你是对的。看这行:
deltaweeks=deltadays/7+1
你能给我一个答案吗:
'Mali'
马里有16到23岁,你的字典里有两次
Samoo
。这是有意的吗?另外,
106-55
不等于
51
?对不起,我可能误解了你的意思question@Haidro我想他也想数一数第106周的比赛,所以那将是
+1
@jamylak啊,这似乎是合理的。事实上,我认为你是对的。请看这一行:
deltaweeks=deltadays/7+1
你能给我一个答案吗:
“马里”
马里的人口在16到30岁之间23@user2058811
dict
不是一个变量,而是一个函数。你也没有发邮件error@user2058811您必须调用了隐藏内置项的某个变量
dict
,检查代码中是否有任何名为
dict
的变量,并更改其名称。此代码段:
dict=\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuudict
应将其重置为you@user2058811像这样:
>>dict
,这是fine@user2058811是的,这是应该发生的,它是一个函数(它打印
type
,因为它是用C语言制作的)。现在试着运行代码:
dict((name,max(weeks)-min(weeks)+1)表示name,d.iteritems()表示weeks)
@user2058811
dict
不是变量,而是函数。你也没有发邮件error@user2058811您必须调用了隐藏内置项的某个变量
dict
,检查代码中是否有任何名为
dict
的变量,并更改其名称。此代码段:
dict=\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuudict
应将其重置为you@user2058811像这样:
>>dict
,这是fine@user2058811是的,这是应该发生的,它是一个函数(它打印
type
,因为它是用C语言制作的)。现在试着运行代码:
dict((name,max(weeks)-min(weeks)+1)表示name,d.iteritems()表示weeks)
>>> d = {'Mali': [17, 16, 23, 18, 17, 16, 17, 18, 16],
 'Gooki': [7, 8, 8, 15, 7, 7, 8],
 'Piata': [85],
 'Samoo': [47, 63, 48, 58, 49, 48],
 'Goerge': [82],
 'Samoo': [106, 55],
 'Marria': [101,39]}
>>> dict((name, max(weeks) - min(weeks) + 1) for name, weeks in d.iteritems())
{'Samoo': 52, 'Gooki': 9, 'Mali': 8, 'Goerge': 1, 'Piata': 1, 'Marria': 63}