পাইথনের একটি অভিধানে কীওয়ার্ডের সংখ্যা গণনা


234

মূলশব্দটির পুনরাবৃত্তি = মান সহ একটি অভিধানে আমার কাছে শব্দের একটি তালিকা রয়েছে তবে আমি কেবল স্বতন্ত্র শব্দের একটি তালিকা চাই তাই আমি কীওয়ার্ডের সংখ্যা গণনা করতে চাই। কীওয়ার্ডের সংখ্যা গণনা করার কোনও উপায় আছে বা আলাদাভাবে শব্দের জন্য আমার অন্য কোনও উপায় খুঁজে পাওয়া উচিত?

উত্তর:


410
len(yourdict.keys())

বা শুধু

len(yourdict)

আপনি যদি ফাইলটিতে অনন্য শব্দ গণনা করতে চান, আপনি কেবল ব্যবহার করতে setএবং পছন্দ করতে পারেন

len(set(open(yourdictfile).read().split()))

4
আমি জানি এই পোস্টটি পুরানো, তবে আমি আগ্রহী ছিলাম was এটি কি দ্রুততম পদ্ধতি? বা: এটা একটি বড় অভিধানের জন্য যুক্তিসঙ্গতভাবে ফাস্ট পদ্ধতি?
জলিসিন

2
উভয় len(yourdict.keys())এবং len(yourdict)ও (1)। পরেরটি সামান্য দ্রুত। আমার পরীক্ষা নীচে দেখুন।
চিহ-হুশান ইয়েন

5
আমি নোট করতে চাই যে আপনি মানগুলির জন্যও যেতে পারেন (আমি জানি প্রশ্নটি এটি জিজ্ঞাসা করেনি)len(yourdict.values())
ntk4

29

len()ফাংশনটি ব্যবহার করে স্বতন্ত্র শব্দের সংখ্যা (যেমন অভিধানে প্রবেশের গণনা) পাওয়া যাবে ।

> a = {'foo':42, 'bar':69}
> len(a)
2

সমস্ত স্বতন্ত্র শব্দ (অর্থাত্ কীগুলি) পেতে, .keys()পদ্ধতিটি ব্যবহার করুন ।

> list(a.keys())
['foo', 'bar']

5

len()আপনার অভিধানে সরাসরি কল করা কাজ করে এবং এটির পুনরুক্তি তৈরির চেয়ে দ্রুত d.keys()এবং len()এটিতে কল করা, তবে আপনার প্রোগ্রামটি যা কিছু করছে তার তুলনায় উভয়ের গতি তুচ্ছ হবে।

d = {x: x**2 for x in range(1000)}

len(d)
# 1000

len(d.keys())
# 1000

%timeit len(d)
# 41.9 ns ± 0.244 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

%timeit len(d.keys())
# 83.3 ns ± 0.41 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

2

যদি প্রশ্নটি কীওয়ার্ডগুলির সংখ্যা গণনা সম্পর্কে হয় তবে এর মতো কিছু প্রস্তাব দেওয়া উচিত

def countoccurrences(store, value):
    try:
        store[value] = store[value] + 1
    except KeyError as e:
        store[value] = 1
    return

মূল ফাংশনটিতে এমন কিছু থাকে যা ডেটা থেকে লুপ করে এবং মানগুলিকে কাউন্টকোক্রান্সিয়েন্স ফাংশনে পাস করে

if __name__ == "__main__":
    store = {}
    list = ('a', 'a', 'b', 'c', 'c')
    for data in list:
        countoccurrences(store, data)
    for k, v in store.iteritems():
        print "Key " + k + " has occurred "  + str(v) + " times"

কোড আউটপুট

Key a has occurred 2 times
Key c has occurred 2 times
Key b has occurred 1 times

2
পিইপি 8 নামকরণের কনভেনশনগুলি হ'ল countoccurrences()পরিবর্তে হওয়া উচিত count_occurrences()। এছাড়াও, যদি আপনি আমদানি collections.Counter, এটা করতে অনেক ভালো উপায়: from collections import Counter; store = Counter(); for data in list: store[list] += 1
গ্রাহাম

0

পাইথন 3 প্রুফ তৈরি করতে আন্ডারওয়াটারক্রিমলিন পোস্ট করা উত্তরটিতে কিছু পরিবর্তন করা হয়েছিল। উত্তর হিসাবে নীচে একটি বিস্ময়কর ফলাফল।

সিস্টেম চশমা:

  • অজগর = 3.7.4,
  • কনডা = 4.8.0
  • 3.6Ghz, 8 কোর, 16 জিবি।
import timeit

d = {x: x**2 for x in range(1000)}
#print (d)
print (len(d))
# 1000

print (len(d.keys()))
# 1000

print (timeit.timeit('len({x: x**2 for x in range(1000)})', number=100000))        # 1

print (timeit.timeit('len({x: x**2 for x in range(1000)}.keys())', number=100000)) # 2

ফলাফল:

1) = 37.0100378

2) = 37.002148899999995

সুতরাং এটি len(d.keys())বর্তমানে কেবল ব্যবহারের চেয়ে দ্রুততর বলে মনে হচ্ছে len()

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.