私はこのHackerrankの質問に就いています。私は実践のためにやっています。私の人生はタプルをタプルの中でどのように並べ替えるべきか分からないようです。辞書内のタプルをタプル内でソートしますか?
例えば、これは、入力
2015-08, 2016-04
2015-08-15, clicks, 635
2016-03-24, app_installs, 683
2015-04-05, favorites, 763
2016-01-22, favorites, 788
2015-12-26, clicks, 525
2016-06-03, retweets, 101
2015-12-02, app_installs, 982
2016-09-17, app_installs, 770
2015-11-07, impressions, 245
2016-10-16, impressions, 567
であり、私が取得することになってるの出力は...
2016-03, app_installs, 683
2016-01, favorites, 788
2015-12, app_installs, 982, clicks, 525
2015-11, impressions, 245
2015-08, clicks, 635
しかし、私が代わりに取得していますことは
です2016-03, app_installs, 683
2016-01, favorites, 788
2015-12, ('clicks', '525'), app_installs, 982
2015-11, impressions, 245
2015-08, clicks, 635
私の問題は、2015-12という行にあります。複数のタプルがあるときに、アルファベット順に並べるのは苦労しています。
これは私が間違ってやっている任意のアイデア私のコード
# Enter your code here. Read input from STDIN. Print output to STDOUT
from datetime import date
line = input()
startDate = line.split(',')[0]
startYear, startMonth = startDate.split('-')
startDate = date(int(startYear), int(startMonth), 1)
endDate = line.split(' ')[1]
endYear, endMonth = endDate.split('-')
endDate = date(int(endYear), int(endMonth), 1)
line = input()
d = {}
while True:
try:
line = input()
currentDate = date(int(line.split('-')[0]), int(line.split('-')[1].split('-')[0]), 1)
if startDate <= currentDate < endDate:
engagement = line.split(',')[1].strip()
totalEngage = line.split(',')[2].strip()
correctDate = "{}-{}".format(currentDate.year, str(currentDate.month).zfill(2))
if not correctDate in d:
d[correctDate] = engagement, totalEngage
else:
d[correctDate] = d[correctDate], engagement, totalEngage
except:
break
for key in reversed(sorted(d)):
fin = "{}, {}".format(key, ', '.join(map(str, d[key])))
print(fin)
のですか?
ありがとうございます!
聖なる地獄。あなたの最初の方法はとても理にかなっています。ありがとうございました! – SortStuff
@SortStuffソリューションを正常に提出したら、常にトップスコアラーが提出したソリューションをチェックすることをお勧めします。それで、あなたはこれらのようなすてきな技を学びます。 – princessRapunzel