পাইথনে সরাসরি ভেরিয়েবল হিসাবে অভিধান কী কীভাবে পেতে পারি (মান থেকে অনুসন্ধান করে নয়)?


189

এই মৌলিক প্রশ্নের জন্য দুঃখিত তবে এর সাথে আমার অনুসন্ধানগুলি কোনও অভিধানের কী কীভাবে পাওয়া যায় তার মূল্যের উপর ভিত্তি করে কী কী পেতে চাই তা ছাড়া আর কিছুই সরিয়ে নিচ্ছে না যা আমি কেবল কীটির পাঠ্য / নামটি চাই এবং চিন্তিত যে অনুসন্ধানে মান অনুসারে 2 বা ততোধিক কী ফিরে আসতে পারে যদি অভিধানে প্রচুর এন্ট্রি থাকে ... আমি যা করার চেষ্টা করছি তা হ'ল:

mydictionary={'keyname':'somevalue'}
for current in mydictionary:

   result = mydictionary.(some_function_to_get_key_name)[current]
   print result
   "keyname"

এর কারণ হ'ল আমি এগুলি একটি নথিতে মুদ্রণ করছি এবং আমি এটি করার জন্য কী নাম এবং মানটি ব্যবহার করতে চাই

আমি নীচের পদ্ধতিটি দেখেছি তবে এটি কেবল কীটির মানটি ফিরিয়ে দেবে বলে মনে হচ্ছে

get(key[, default])

আপনি কি কেবল অভিধানে 'কী-নাম' আছে কিনা তা পরীক্ষা করতে চান? কারণ আপনার কাছে এটি ইতিমধ্যে আছে।
relet

1
না আমি যেমনটি বলেছি, এটি মুদ্রণ করা দরকার, এটি বিশাল সংখ্যক কীগুলির মাধ্যমে পুনরাবৃত্তি হবে
রিক

currentবর্তমান কী, ঠিক করুনprint current
মোবার্গ

4
আপনি অভিধানে কেবল প্রথম ম কী কীভাবে পাবেন? (কোনও পুনরাবৃত্তি নেই)
ভিআইএসকিউএল

উত্তর:


238

আপনার কীগুলির সাহায্যে পুনরাবৃত্তি হওয়া উচিত:

for key in mydictionary:
   print "key: %s , value: %s" % (key, mydictionary[key])

10
আপনি কেবল লিখতে পারেনfor key in mydictionary:
ব্লোকলে

7
অজগর 3.6 এ:print (f"key: {key}, value: {mydictionary[key]}")
জিনসনু

94

আপনি কী এবং মান মুদ্রণ করতে চাইলে নিম্নলিখিতটি ব্যবহার করুন:

for key, value in my_dict.iteritems():
    print key, value

26
পাইথন 3 এর জন্য: আইটেমগুলি () এরিরাইটেমের পরিবর্তে ()
toshiro92

82

এর কারণ হ'ল আমি এগুলি একটি নথিতে মুদ্রণ করছি এবং আমি এটি করার জন্য কী নাম এবং মানটি ব্যবহার করতে চাই

উপরের প্রয়োজনের উপর ভিত্তি করে এটিই আমি পরামর্শ দেব:

keys = mydictionary.keys()
keys.sort()

for each in keys:
    print "%s: %s" % (each, mydictionary.get(each))

আমি লুপ অন my_dict.item()বা তালিকার মতো বোধগম্যর জন্য অন্যান্য উত্তরগুলি পছন্দ করি keys = list(my_dict.keys)তবে ঠিক যদি কেউ পাইথন 3: (লাইন 2) keys = sorted(my_dict.keys())+ প্রিন্ট করতে যোগ করুন) তে এটি করতে চায়।
Honiix

49

অভিধানে যদি এর মতো একটি জুড়ি থাকে:

d = {'age':24}

তাহলে আপনি হিসাবে পেতে পারেন

field, value = d.items()[0]

পাইথন 3.5 এর জন্য, এটি করুন:

key = list(d.keys())[0]

4
পাইথন 3.5:TypeError: 'dict_items' object does not support indexing
সিনক্স 2

বেশ হ্যাকিশ তবে ডি .__ ইট __ () .__ পরবর্তী __ () কৌতুক করে। আপনি 'বয়স' পেতে। আপনি এই d.items () .__ ইটার __ () .__ পরবর্তী __ () [0] এর সাথে একই ফলাফল পাবেন।
yoshi

2
পাইথন 3-তে, এটি একটি জোড় ডিক্টের জন্য কাজ করে:key = list(d.keys())[0]
জুহা আনটিনেন

আপনি যদি একটি বিশাল অভি ব্যবহার থাকে তাহলে next()ভাল অনুযায়ী হল: stackoverflow.com/a/27638751/1488445
জুহাকে Untinen

14

keys=[i for i in mydictionary.keys()] অথবা keys = list(mydictionary.keys())


দয়া করে কোড ট্যাগ ব্যবহার এবং আপনার উত্তরটিও ব্যাখ্যা করার বিষয়টি নিশ্চিত করুন explain
Chrismas007

9

এর মত সহজ:

mydictionary={'keyname':'somevalue'}
result = mydictionary.popitem()[0]

আপনি আপনার অভিধানটি পরিবর্তন করতে পারবেন এবং প্রথমে এর একটি অনুলিপি তৈরি করা উচিত


8

আপনি সহজেই ব্যবহার করতে পারেন *যা অভিধান কীগুলি আনপ্যাক করে। উদাহরণ:

d = {'x': 1, 'y': 2}
t = (*d,)
print(t) # ('x', 'y')

পাইথন 34: সিনট্যাক্স এরিয়ার: কেবলমাত্র নির্ধারিত লক্ষ্য হিসাবে তারাযুক্ত অভিব্যক্তি ব্যবহার করতে পারে
Tcll

তবে, আমি পাইথন 34 ব্যবহার করি কারণ আমি আমার উইন্ডোজ পরীক্ষার পরিবেশে আরও নতুন কিছু চালাতে পারি না।
টিসিএল

5

আইটেম ওভার ডিকশনারি (i) কীটি ফিরিয়ে দেবে, তারপরে মানটি পাওয়ার জন্য এটি ব্যবহার করে (i)

for i in D:
    print "key: %s, value: %s" % (i, D[i])

3

পাইথন 3 এর জন্য যদি আপনি কেবল চাবি পেতে চান তবে এটি ব্যবহার করুন। আপনি মানগুলি চাইলে মুদ্রণ (কী) এর সাথে মুদ্রণ (মান) প্রতিস্থাপন করুন।

for key,value in my_dict:
  print(key)

3

আমি মাঝে মাঝে যা করি তা হ'ল আমি স্ট্রিং হিসাবে অ্যাক্সেস করতে আমার যা প্রয়োজন মনে করি কেবল সক্ষম করতে আমি আরেকটি অভিধান তৈরি করি। তারপরে আমি একাধিক অভিধানের মিলগুলি কীগুলি পুনরুক্তি করি যেমন বর্ণনা হিসাবে প্রথম কলাম সহ একটি টেবিল।

dict_names = {'key1': 'Text 1', 'key2': 'Text 2'}
dict_values = {'key1': 0, 'key2': 1} 

for key, value in dict_names.items():
    print('{0} {1}'.format(dict_names[key], dict_values[key])

ডেটা মেলাতে আপনি বিশাল পরিমাণ অভিধানের জন্য সহজেই করতে পারেন (আমি পছন্দ করি যে অভিধানের সাহায্যে আপনি সর্বদা মূল নাম হিসাবে পরিচিত কোনও কিছু উল্লেখ করতে পারেন)

হ্যাঁ আমি ফাংশনগুলির ফলাফল সংরক্ষণের জন্য অভিধানগুলি ব্যবহার করি যাতে প্রতিবারই আমি কেবল একবার কল করে তারপরে ফলাফলগুলি অ্যাক্সেস করার জন্য এই ফাংশনগুলি চালানোর দরকার নেই।

সম্পাদনা করুন: আমার উদাহরণে মূল নামটি আসলে কিছু যায় আসে না (আমি ব্যক্তিগতভাবে একই মূল নামগুলি ব্যবহার করতে পছন্দ করি যেহেতু আমার যে কোনও মিলের অভিধান থেকে একক মান বাছাই করা সহজ), কেবল নিশ্চিত করুন যে প্রতিটি অভিধানে কী সংখ্যা রয়েছে একই


0

আপনি তালিকার কীগুলি এবং মানগুলিকে তালিকায় রেখে এটি করতে পারেন। এটি আইটেমগুলির জন্যও করা যেতে পারে।

উদাহরণ:

f = {'one': 'police', 'two': 'oranges', 'three': 'car'}
list(f.keys())[0] = 'one'
list(f.keys())[1] = 'two'

list(f.values())[0] = 'police'
list(f.values())[1] = 'oranges'

-2

সহজেই আপনার কী এবং মানগুলির অবস্থান পরিবর্তন করুন, তারপরে কী পেতে মানগুলি ব্যবহার করুন, অভিধান কীগুলিতে একই মান থাকতে পারে তবে সেগুলির (কীগুলি) আলাদা হওয়া উচিত। উদাহরণস্বরূপ আপনার যদি একটি তালিকা থাকে এবং এর প্রথম মানটি আপনার সমস্যার জন্য মূল এবং অন্য মানগুলি হ'ল প্রথম মানটির চশমা:

list1=["Name",'ID=13736','Phone:1313','Dep:pyhton']

আপনি এই লুপের সাহায্যে অভিধানে সহজেই ডেটা সংরক্ষণ এবং ব্যবহার করতে পারেন:

data_dict={}
for i in range(1, len(list1)):
     data_dict[list1[i]]=list1[0]
print(data_dict)
{'ID=13736': 'Name', 'Phone:1313': 'Name', 'Dep:pyhton': 'Name'}

তারপরে আপনি যে কোনও ইনপুট মানের কী (নাম) বেসটি পেতে পারেন।

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