मेरे पास हर दिन निश्चित समय पर ज्वार के बारे में जानकारी की सूची है। यह कुछ इस तरह दिखता है:

tideData = [
['Thursday 4 January',11.58,0.38],
['Thursday 4 January',16.95,0.73],
['Friday 5 January',6.48,0.83],
['Friday 5 January',12.42,0.33],
['Saturday 6 January',0.5,0.02],
['Saturday 6 January',7.18,0.85],
...
['Friday 2 February',23.52,0.04]
]

मैं इस सूची को समान तिथियों वाले उपन्यासकारों में विभाजित करना चाहता हूं। उपरोक्त मामले में, सूची बन जाएगी:

tideData = [
[['Thursday 4 January',11.58,0.38],
['Thursday 4 January',16.95,0.73]],
[['Friday 5 January',6.48,0.83],
['Friday 5 January',12.42,0.33],
['Friday 5 January',17.92,0.75]],
[['Saturday 6 January',0.5,0.02],
['Saturday 6 January',7.18,0.85]],
...
['Friday 2 February',23.52,0.04]]
]

अब, यदि प्रत्येक तिथि की समान संख्या होती तो यह कोई समस्या नहीं होती। हालांकि, तिथियां कभी दो बार दिखाई देती हैं और कभी-कभी तीन बार दिखाई देती हैं। जैसे, मैं उन्हें दोहराने की तारीखों के आधार पर उपन्यासकारों में क्रमबद्ध करने में सक्षम होना चाहता हूं। मैं इसे किस तरह लूं?

0
Kris Walker 28 मार्च 2018, 15:17

1 उत्तर

मुझे लगता है कि आप itertools पैकेज से groupby का उपयोग करना चाहते हैं

from itertools import groupby

tideData = [
['Thursday 4 January',11.58,0.38],
['Thursday 4 January',16.95,0.73],
['Friday 5 January',6.48,0.83],
['Friday 5 January',12.42,0.33],
['Saturday 6 January',0.5,0.02],
['Saturday 6 January',7.18,0.85],
['Friday 2 February',23.52,0.04]
]

यदि आपका डेटा सॉर्ट नहीं किया गया है, तो आप इसका उपयोग कर सकते हैं:

tideData = sorted(tideData, key=lambda x: x[0])

निम्नलिखित का उपयोग करने से पहले:

[list(g) for _,g in groupby(tideData, key=lambda x: x[0])]
# returns:
[[['Thursday 4 January', 11.58, 0.38], ['Thursday 4 January', 16.95, 0.73]],
 [['Friday 5 January', 6.48, 0.83], ['Friday 5 January', 12.42, 0.33]],
 [['Saturday 6 January', 0.5, 0.02], ['Saturday 6 January', 7.18, 0.85]],
 [['Friday 2 February', 23.52, 0.04]]]
2
James 28 मार्च 2018, 12:25