পাইথন ডিককে কোয়ার্গসে রূপান্তর করা?


323

আমি ক্লাসের উত্তরাধিকার ব্যবহার করে সানবার্ট (সোলার ইন্টারফেস) এর জন্য একটি কোয়েরি তৈরি করতে চাই এবং তাই এক সাথে কী - মান জোড়া যুক্ত করতে চাই। সানবার্ট ইন্টারফেস কীওয়ার্ড আর্গুমেন্ট নেয়। কীভাবে আমি একটি ডিককে ({'type':'Event'})কীওয়ার্ড আর্গুমেন্টে রূপান্তর করতে পারি (type='Event')?

উত্তর:


562

ব্যবহার করুন ডাবল তারকা (ওরফে ডাবল splat? ) অপারেটর:

func(**{'type':'Event'})

সমতুল্য

func(type='Event')

82
এবং যদি আপনি ইতিমধ্যেই একটি অভি বস্তুর "myDict" আপনি শুধু বলা আছে যদি func(**myDict) .iemyDict = {"type": "event"}
জেমস Khoury

3
পাইথন স্ট্যান্ডার্ড ডকুমেন্টেশনে এটি বেশ সুন্দরভাবে আচ্ছাদিত। আরও দেখুন: স্ট্যাকওভারফ্লো . com / প্রশ্নগুলি 111116161 । (dmid: // জুস_কোব্রা_হুষ)
dreftymac

1
এটি উজ্জ্বলভাবে সহায়ক, বিশেষত সোয়াগার মডেল উদাহরণগুলিতে রূপান্তরিত অভিধানগুলি ব্যবহার করার সময়। ধন্যবাদ।
টিমিন্স

13

** অপারেটর এখানে সহায়ক হবে।

**অপারেটর ডিক উপাদানগুলি আনপ্যাক করবে এবং সুতরাং **{'type':'Event'}হিসাবে বিবেচিত হবেtype='Event'

func(**{'type':'Event'})যেমন func(type='Event')ডিক উপাদানগুলি রূপান্তরিত হবে keyword arguments

অবগতির জন্য

*তালিকার উপাদানগুলি আনপ্যাক করবে এবং তাদের হিসাবে বিবেচনা করা হবে positional arguments

func(*['one', 'two']) হিসাবে একই func('one', 'two')


4

**কীওয়ার্ড আর্গুমেন্ট হিসাবে অভিধান থেকে মানগুলি পাস করতে অপারেটরটি কীভাবে ব্যবহার করবেন তা দেখানোর একটি সম্পূর্ণ উদাহরণ এখানে ।

>>> def f(x=2):
...     print(x)
... 
>>> new_x = {'x': 4}
>>> f()        #    default value x=2
2
>>> f(x=3)     #   explicit value x=3
3
>>> f(**new_x) # dictionary value x=4 
4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.