ডিকশনারির কীগুলো ট্রাঙ্কেট (ছোট করে) করে নতুন ডিকশনারি বানাতে লিস্ট কম্প্রিহেনশন ব্যবহার করা যায়।
ফাংশন
def truncate_keys(a, length):
return dict((k[:length], v) for k, v in a.items())
# ব্যবহার
a = {'foo': 125, 'bar': 'hello'}
b = truncate_keys(a, 2)
print(b)
আউটপুট
{'fo': 125, 'ba': 'hello'}
সতর্কতা: নেম কলিশন (Name Collision)
a = {'foo': 1, 'food': 2}
b = truncate_keys(a, 3)
print(b) # {'foo': 2} - 'foo' এবং 'food' উভয়ই 'foo' হয়ে গেল, শেষটি জয়ী
সমাধান: ইউনিক কী জেনারেট
def truncate_keys_unique(a, length):
result = {}
counts = {}
for k, v in a.items():
truncated = k[:length]
if truncated in counts:
counts[truncated] += 1
truncated = f"{truncated}_{counts[truncated]}"
else:
counts[truncated] = 0
result[truncated] = v
return result