Answers:
{key: value for (key, value) in iterable}
සටහන: මෙය පයිතන් 3.x සඳහා (සහ 2.7 ඉහළට). කලින් පයිතන් 2.6 සහ ඊට පෙර, dict
සාදන ලද යතුරු / අගය යුගල නැවත ලබා ගත හැකි බැවින් ඔබට එය ලැයිස්තු අවබෝධයක් හෝ උත්පාදක ප්රකාශනයක් ලබා දිය හැකිය. උදාහරණයක් වශයෙන්:
dict((key, func(key)) for key in keys)
සරල අවස්ථා වලදී ඔබට අවබෝධයක් අවශ්ය නොවේ ...
dict
බිල්ට් කෙලින්ම අමතන්න:1) consumed from any iterable yielding pairs of keys/vals
dict(pairs)
2) "zip'ped" from two separate iterables of keys/vals
dict(zip(list_of_keys, list_of_values))
පයිතන් 3 සහ පයිතන් 2.7+ හි ශබ්ද කෝෂ අවබෝධය පහත පරිදි වේ:
d = {k:v for k, v in iterable}
පයිතන් 2.6 හෝ ඊට පෙර, ෆෝට්රාන්ගේ පිළිතුර බලන්න .
ඇත්ත වශයෙන්ම, එය කිසියම් ආකාරයක සිතියම්ගත කිරීමක් දැනටමත් වටහාගෙන තිබේ නම්, එය නැවත කියවීමට ඔබට අවශ්ය නැත.
>>> ts = [(1, 2), (3, 4), (5, 6)]
>>> dict(ts)
{1: 2, 3: 4, 5: 6}
>>> gen = ((i, i+1) for i in range(1, 6, 2))
>>> gen
<generator object <genexpr> at 0xb7201c5c>
>>> dict(gen)
{1: 2, 3: 4, 5: 6}
පයිතන් 2.7 හි එය මෙසේ ය:
>>> list1, list2 = ['a', 'b', 'c'], [1,2,3]
>>> dict( zip( list1, list2))
{'a': 1, 'c': 3, 'b': 2}
ඒවා සිප් කරන්න !
පයිතන් හි ලැයිස්තු අවබෝධය සහිත ශබ්ද කෝෂයක් සාදන්න
මම පයිතන් ලැයිස්තු තේරුම් ගැනීමේ සින්ටැක්ස් වලට කැමතියි.
ශබ්ද කෝෂ නිර්මාණය කිරීමට ද එය භාවිතා කළ හැකිද? උදාහරණයක් ලෙස, යතුරු සහ අගයන් යුගල හරහා නැවත සැකසීමෙන්:
mydict = {(k,v) for (k,v) in blah blah blah}
ඔබ සොයන්නේ "ඩික්ට් අවබෝධය" - එය ඇත්ත වශයෙන්ම:
mydict = {k: v for k, v in iterable}
උපකල්පනය blah blah blah
කිරීම දෙවරක් කළ හැකි දෙයක් - ඔබ ඉතා සමීපයි. අපි ඒ වගේ "බ්ලා" කිහිපයක් නිර්මාණය කරමු:
blahs = [('blah0', 'blah'), ('blah1', 'blah'), ('blah2', 'blah'), ('blah3', 'blah')]
දැන් මෙහි වාක්ය ඛණ්ඩය සිතියම්ගත කිරීමේ කොටසයි. කුමක්ද මේ කරයි dict
අවබෝධය වෙනුවට set
අවබෝධය (දේ ඔබේ ව්යාජ කේතය ආසන්න වන වන), මහ බඩවැල ය :
පහත වගේ:
mydict = {k: v for k, v in blahs}
එය ක්රියාත්මක වූ බව අපට පෙනේ, සහ පයිතන් 3.7 හි ඇතුළත් කිරීමේ අනුපිළිවෙල රඳවා ගත යුතුය:
>>> mydict
{'blah0': 'blah', 'blah1': 'blah', 'blah2': 'blah', 'blah3': 'blah'}
පයිතන් 2 සහ 3.6 දක්වා, ඇණවුම සහතික කර නැත:
>>> mydict
{'blah0': 'blah', 'blah1': 'blah', 'blah3': 'blah', 'blah2': 'blah'}
සියළුම අවබෝධයන්හි සිතියම්කරණ අංගයක් සහ ඔබට අත්තනෝමතික ප්රකාශන ලබා දිය හැකි පෙරහන් අංගයක් ඇත.
එබැවින් ඔබට අවසානයට පෙරහන් කොටසක් එක් කළ හැකිය:
>>> mydict = {k: v for k, v in blahs if not int(k[-1]) % 2}
>>> mydict
{'blah0': 'blah', 'blah2': 'blah'}
යතුරු සහ අගයන් සිතියම් ගත කිරීමට පෙර දත්ත පෙරීමට අවසාන අක්ෂරය 2 න් බෙදිය හැකිදැයි අපි මෙහිදී පරීක්ෂා කරමු.
පයිතන් අනුවාදය <2.7 (RIP, 2010 ජූලි 3 - 2019 දෙසැම්බර් 31) , පහත සඳහන් දෑ කරන්න:
d = dict((i,True) for i in [1,2,3])
පයිතන් අනුවාදය> = 2.7, පහත සඳහන් දෑ කරන්න:
d = {i: True for i in [1,2,3]}
@ Fortran ගේ පිළිතුරට එක් කිරීමට, ඔබට යතුරු key_list
ලැයිස්තුවක් මෙන්ම සාරධර්ම ලැයිස්තුවක් හරහා නැවත කියවීමට අවශ්ය නම් value_list
:
d = dict((key, value) for (key, value) in zip(key_list, value_list))
හෝ
d = {(key, value) for (key, value) in zip(key_list, value_list)}
ඩික්ට් අවබෝධය භාවිතා කරමින් ශබ්ද කෝෂ නිර්මාණය සඳහා තවත් උදාහරණයක් මෙන්න:
මා මෙහි කිරීමට උත්සාහ කරන්නේ එක් එක් යුගලයේ හෝඩියේ ශබ්ද කෝෂයක් නිර්මාණය කිරීමයි; යනු ඉංග්රීසි අකුර සහ ඉංග්රීසි හෝඩියේ අනුරූප පිහිටීමයි
>>> import string
>>> dict1 = {value: (int(key) + 1) for key, value in
enumerate(list(string.ascii_lowercase))}
>>> dict1
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8,
'k': 11, 'j': 10, 'm': 13, 'l': 12, 'o': 15, 'n': 14, 'q': 17, 'p': 16, 's':
19, 'r': 18, 'u': 21, 't': 20, 'w': 23, 'v': 22, 'y': 25, 'x': 24, 'z': 26}
>>>
ලැයිස්තුවේ ඇති අක්ෂර හා ඒවායේ දර්ශක ලබා ගැනීම සඳහා ගණනය කිරීම් මෙහි භාවිතා කිරීම සහ ශබ්දකෝෂය සඳහා ප්රධාන අගය යුගලයක් ජනනය කිරීම සඳහා හෝඩිය සහ දර්ශක මාරු කිරීම සැලකිල්ලට ගන්න.
එය ඔබට ශබ්ද කෝෂ සංයුක්තය පිළිබඳ හොඳ අදහසක් ලබා දෙන අතර ඔබේ කේතය සංයුක්ත කිරීමට එය නිතර භාවිතා කිරීමට ඔබව දිරිමත් කරයි
d = {k: v+1 for v, k in enumerate(string.ascii_lowercase)}
මේක උත්සාහ කරන්න,
def get_dic_from_two_lists(keys, values):
return { keys[i] : values[i] for i in range(len(keys)) }
අපට රට සහ ප්රාග්ධනය ලැයිස්තු දෙකක් ඇතැයි උපකල්පනය කරන්න
country = ['India', 'Pakistan', 'China']
capital = ['New Delhi', 'Islamabad', 'Beijing']
ඉන්පසු ලැයිස්තු දෙකෙන් ශබ්දකෝෂයක් සාදන්න:
print get_dic_from_two_lists(country, capital)
ප්රතිදානය මේ වගේ ය,
{'Pakistan': 'Islamabad', 'China': 'Beijing', 'India': 'New Delhi'}
>>> {k: v**3 for (k, v) in zip(string.ascii_lowercase, range(26))}
ඒ හා සමාන සංක්ෂිප්ත වාක්ය ඛණ්ඩයක් භාවිතා කරමින් ධාවන වේලාවේදී ශබ්ද කෝෂ නිර්මාණය කිරීම ප්රකාශ කිරීමට ඔබට ඉඩ සලසන ඩයික් අවබෝධය සඳහා පයිතන් සහාය දක්වයි.
ශබ්ද කෝෂ අවබෝධය {යතුර: නැවත ලබා ගත හැකි in සඳහා (යතුර, අගය) අගය ගනී. මෙම වාක්ය ඛණ්ඩය පයිතන් 3 හි හඳුන්වා දී ඇති අතර එය පයිතන් 2.7 තරම් back තට ගෙන ඇත, එබැවින් ඔබ ස්ථාපනය කර ඇති පයිතන් අනුවාදය කුමක් වුවත් එය භාවිතා කිරීමට ඔබට හැකි විය යුතුය.
කැනොනිකල් නිදසුනක් නම් ලැයිස්තු දෙකක් ගෙන ශබ්දකෝෂයක් නිර්මාණය කිරීම, පළමු ලැයිස්තුවේ එක් එක් ස්ථානයේ ඇති අයිතමය යතුරක් බවට පත්වන අතර දෙවන ලැයිස්තුවේ අනුරූප ස්ථානයේ ඇති අයිතමය අගය බවට පත්වේ.
මෙම අවබෝධය තුළ භාවිතා කරන සිප් ශ්රිතය ටුපල්වල අනුකාරකයක් ලබා දෙයි, එහිදී ටුපල්හි එක් එක් මූලද්රව්යය එක් එක් ආදාන පුනරාවර්තනවල එකම ස්ථානයකින් ගනු ලැබේ. ඉහත උදාහරණයේ දී, ආපසු ලබා දුන් අනුකාරකයේ ටුපල් (“අ”, 1), (“ආ”, 2) යනාදිය අඩංගු වේ.
ප්රතිදානය:
i 'i': 512, 'e': 64, 'o': 2744, 'h': 343, 'l': 1331, 's': 5832, 'b': 1, 'w': 10648, ' c ': 8,' x ': 12167,' y ': 13824,' t ': 6859,' p ': 3375,' d ': 27,' j ': 729,' a ': 0,' z ' : 15625, 'f': 125, 'q': 4096, 'u': 8000, 'n': 2197, 'm': 1728, 'r': 4913, 'k': 1000, 'g': 216 , 'v': 9261}
මෙම කේතය භාවිතා කළ හැකි විවිධ අගයන් සහිත බහු ලැයිස්තු සඳහා ලැයිස්තු අවබෝධය භාවිතා කරමින් ශබ්ද කෝෂය නිර්මාණය කරයි pd.DataFrame()
#Multiple lists
model=['A', 'B', 'C', 'D']
launched=[1983,1984,1984,1984]
discontinued=[1986, 1985, 1984, 1986]
#Dictionary with list comprehension
keys=['model','launched','discontinued']
vals=[model, launched,discontinued]
data = {key:vals[n] for n, key in enumerate(keys)}
enumerate
සමත් වනු ඇත n
කිරීමට vals
එක් එක් ගැලපෙන key
ලැයිස්තුවට සමග
ඔබට එක් එක් යුගල සඳහා නව ආ ict ාවක් සාදා එය පෙර ආ ict ාව සමඟ ඒකාබද්ධ කළ හැකිය:
reduce(lambda p, q: {**p, **{q[0]: q[1]}}, bla bla bla, {})
නිසැකවම මෙම ප්රවේශයන් අවශ්ය reduce
වේ functools
.
collections.Counter
යනු දේවල් ගණනය කිරීම සඳහා වූ විශේෂිත