Tuples की सूची में एक तत्व का पता लगाएं


140

मेरे पास एक सूची है 'a'

a= [(1,2),(1,4),(3,5),(5,7)]

मुझे किसी विशेष संख्या के लिए सभी टुपल्स खोजने की आवश्यकता है। 1 के लिए यह होगा

result = [(1,2),(1,4)]

मैं उसको कैसे करू?

जवाबों:


236

अगर आप चाहते हैं कि पहला नंबर मैच के लिए हो तो आप इसे इस तरह से कर सकते हैं:

[item for item in a if item[0] == 1]

यदि आप उनमें से 1 के साथ टुपल्स खोज रहे हैं:

[item for item in a if 1 in item]

115

ऐसा करने के लिए वास्तव में एक चतुर तरीका है जो किसी भी सूची के लिए उपयोगी है जहां प्रत्येक ट्यूपल का आकार 2 है: आप अपनी सूची को एक शब्दकोश में बदल सकते हैं।

उदाहरण के लिए,

test = [("hi", 1), ("there", 2)]
test = dict(test)
print test["hi"] # prints 1

11
आप इसे ब्रूस की समस्या पर कैसे लागू करते हैं?
हैलोगूडीबाई

5
अच्छा जवाब (हालांकि संभवतः इस सवाल के लिए नहीं)। मेरे लिए यह निर्धारित करने के लिए अच्छी तरह से काम किया गया था कि कोई विकल्प पसंद की ट्यूपल्स की सूची में था (उदाहरण के लिए, यदि परीक्षण में "हाय")
मैजिकलैम्प

10
यह वास्तव में इस सवाल का जवाब नहीं देता है, जैसा कि मैजिकलैम्प बताता है। विशेष रूप से, dict(X)X को एक ऐसे शब्दकोश में रूपांतरित करता है जहाँ किसी भी सामान्य तत्व का अंतिम टपल होता है, जिसका उपयोग किया जाता है। ओपी के उदाहरण में, यह (1,4) दोनों (1,2) और (1,4) दोनों के विपरीत होगा।
बीबीकॉफ





1

filterसमारोह भी एक दिलचस्प समाधान प्रदान कर सकते हैं:

result = list(filter(lambda x: x.count(1) > 0, a))

जो की किसी भी घटना के लिए सूची में tuples खोजता है 1। यदि खोज पहले तत्व तक सीमित है, तो समाधान को संशोधित किया जा सकता है:

result = list(filter(lambda x: x[0] == 1, a))

1

फ़िल्टर फ़ंक्शन का उपयोग करना:

>>> मिल get_values ​​(पुनरावृत्तियों, key_to_find):
वापसी सूची (फ़िल्टर (लैम्ब्डा x: key_to_find in x, iterables)) >>> a = [(1,2), (1,4), (3,5), (5,7)] >>> get_values ​​(ए, 1) >>> [(१, २), (१, ४)]

1

या takewhile, (इसके अलावा, अधिक मूल्यों का उदाहरण दिखाया गया है):

>>> a= [(1,2),(1,4),(3,5),(5,7),(0,2)]
>>> import itertools
>>> list(itertools.takewhile(lambda x: x[0]==1,a))
[(1, 2), (1, 4)]
>>> 

यदि नहीं, तो:

>>> a= [(1,2),(3,5),(1,4),(5,7)]
>>> import itertools
>>> list(itertools.takewhile(lambda x: x[0]==1,sorted(a,key=lambda x: x[0]==1)))
[(1, 2), (1, 4)]
>>> 

0

यदि आप किसी भी संख्या के लिए tuple खोजना चाहते हैं जो tuple में मौजूद है तो आप उपयोग कर सकते हैं

a= [(1,2),(1,4),(3,5),(5,7)]
i=1
result=[]
for j in a:
    if i in j:
        result.append(j)

print(result)

if i==j[0] or i==j[index]यदि आप किसी विशेष इंडेक्स में नंबर खोजना चाहते हैं तो आप इसका उपयोग भी कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.