यह मेरा नमूना कोड है:

import random
class Test:
    def __init__(self, pin, name):
        self.Pin = pin
        self.Name = name

objects = []
myPinList = [123, 323, 1234, 123, 12314, 1234, 1231, 5754, 5456, 4245, 6573, 5743, 567, 563]

objects.append(Test(random.choice(myPinList), "Jhon"))
objects.append(Test(random.choice(myPinList), "Nimra"))
objects.append(Test(random.choice(myPinList), "Thomas"))
objects.append(Test(random.choice(myPinList), "Treesa"))
objects.append(Test(random.choice(myPinList), "Newt"))
objects.append(Test(random.choice(myPinList), "Greny"))

अब मैं उन वस्तुओं की कुल संख्या गिनना चाहता हूं जिनके पास पिन विशेषता का समान मूल्य है।

objects_having_same_Pin = ???

मैंने बहुत कुछ खोजा लेकिन ऐसा करने के लिए एक पाइथोनिक तरीका नहीं मिला।

1
Dosti 9 जून 2018, 19:12

1 उत्तर

सबसे बढ़िया उत्तर

आप यहां collections.Counter का उपयोग कर सकते हैं:

cnts = Counter([i.Pin for i in objects])

# Counter({1231: 2, 1234: 1, 5456: 1, 5743: 1, 6573: 1})

फिर यदि आप कुल संख्या चाहते हैं तो बस एक से अधिक सभी मानों का योग करें:

'{} users share a Pin'.format(sum([i for _, i in cnts.items() if i > 1]))

# '2 users share a Pin'

यदि आप जानना चाहते हैं कि कौन पिन साझा करता है, तो आप collections.defaultdict का उपयोग कर सकते हैं:

dct = defaultdict(list)

for obj in objects:
    dct[obj.Pin].append(obj.Name)

# defaultdict(list,
#            {1231: ['Jhon', 'Thomas'],
#             1234: ['Nimra'],
#             5456: ['Treesa'],
#             5743: ['Newt'],
#             6573: ['Greny']})
2
user3483203 9 जून 2018, 19:22