मैंने हाल ही में एक समस्या का समाधान किया है और मैं निश्चित रूप से जानता हूं कि समस्या का शीघ्र समाधान होना चाहिए। मैं अभी सीख रहा हूं और मैं कुशल कोड लिखना चाहता हूं, इसलिए यदि आप मुझे कुछ सुझा सकते हैं तो यह मददगार होगा।

मुझे यह आउटपुट चाहिए (जो मुझे मिला):

Jozefína likes to go to here: Amsterdam ,Liverpool ,London.
Marek likes to go to here: Košice.
Jozef likes to go to here: Lisabon ,Vancouver.

पुनश्च: लोगों और शहरों के नाम पूरी तरह से यादृच्छिक हैं इसलिए आप इसे बदल सकते हैं

और इस समस्या के लिए मेरा कोड है:

favourite_places = {
    "Jozefína": ["Amsterdam", "Liverpool", "London"],
    "Marek": ["Košice"],
    "Jozef": ["Lisabon", "Vancouver"]
}


for name in favourite_places:
    line = ""
    for place in favourite_places[name]:
        if len(favourite_places[name]) == 1:
            line = place
        else:
            line += place + " ,"
    if line[-1] == ",":
        line = line[0:-2]
    print(f"{name} likes to go to here: {line}.")

अंत में मैं उस व्यक्ति और स्थानों के नाम के साथ एक वाक्य रखना चाहता/चाहती हूं जहां वह जाना पसंद करता है (अल्पविराम द्वारा दिया गया)।

मुझे आशा है कि मैंने समस्या का सही वर्णन किया है। मैं बस अपना कोड अनुकूलित करना चाहता हूं। मैं किसी भी सुझाव के लिए आभारी रहूंगा।

0
user14494380 28 अक्टूबर 2020, 19:59

4 जवाब

सबसे बढ़िया उत्तर

आप जो खो रहे हैं वह एक join और items फ़ंक्शन है। join निर्दिष्ट सीमांकक के साथ चलने योग्य सभी वस्तुओं को जोड़ता है। यदि केवल 1 आइटम है, तो कोई सीमांकक नहीं जोड़ा जाएगा। आमतौर पर स्ट्रिंग्स को + या += के साथ जोड़ना एक बुरा अभ्यास माना जाता है। स्ट्रिंग्स अपरिवर्तनीय हैं और इस प्रकार प्रत्येक संयोजन एक नई स्ट्रिंग उत्पन्न करता है, जिसके लिए इसके लिए स्मृति आवंटित की जानी चाहिए। इससे बचने के लिए, आप पहले स्ट्रिंग के सभी हिस्सों को सूची में एकत्र कर सकते हैं (जो आपके पास पहले से इनपुट के रूप में है) और फिर उनसे जुड़ें।

items() शब्दकोश के (कुंजी, मान) के टुपल्स लौटाता है।

favourite_places = {
    "Jozefína": ["Amsterdam", "Liverpool", "London"],
    "Marek": ["Košice"],
    "Jozef": ["Lisabon", "Vancouver"]
}


for name, places in favourite_places.items():
    print(f"{name} likes to go to here: {', '.join(places)}.")
4
go2nirvana 28 अक्टूबर 2020, 20:13

यहाँ कुछ सुधार है:

favourite_places = {
    "Jozefína": ["Amsterdam", "Liverpool", "London"],
    "Marek": ["Košice"],
    "Jozef": ["Lisabon", "Vancouver"]
}


for name, place in favourite_places.items():
    line = ', '.join(place)
    print(f'{name} likes to go to here: {line}')
0
Matiiss 28 अक्टूबर 2020, 20:08

replace का उपयोग करके देखें

for name, places in favourite_places.items():  
    print(name + " likes to go to here: " + str(places).replace('[', '').replace("'", "").replace(']', ''))
0
Oliver Hnat 28 अक्टूबर 2020, 20:08

इसे पूरा करने का सबसे आसान तरीका मैं सोच सकता हूं:

for name, places in favourite_places.items():
  print(f'{name} likes to go here: {", ".join(places)}.')

.items() शब्दकोश से (कुंजी, मान) टुपल्स की एक सूची देता है, जो नाम और स्थानों में विघटित हो जाते हैं, फिर ", ".join(places) एक स्ट्रिंग लौटाएगा जो प्रत्येक तत्व को स्थानों की सूची में एक के साथ अलग करता है। अल्पविराम, और केवल एक ही तत्व होने पर इसे स्वचालित रूप से छोड़ देगा।

1
draeceo 28 अक्टूबर 2020, 20:06