मान लीजिए कि एक सूची है: ['1604780184', '10', '1604780194', '0', '1604780319', '99', '1604780320', '0']

आपको ऐसा परिणाम प्राप्त करने की आवश्यकता है: {'1604780184': '10', '1604780194': '0', '1604780319': '99', '1604780320': '0'}

अब मेरे पास ऐसा है:

rline = ['1604780184', '10', '1604780194', '0', '1604780319', '99', '1604780320', '0']
total = {}
print(f"My list: {rline}")

while rline:
    total[rline[0:2][0]] = rline[0:2][1]
    del rline[0:2]

print(f"Dictionary: {total}")

कृपया कोई बेहतर तरीका बताएं। धन्यवाद।

2
Artem Baranov 9 नवम्बर 2020, 22:44

2 जवाब

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

सबसे संक्षिप्त (और शायद सबसे अच्छा) तरीका हो सकता है:

result = dict(zip(lst[::2], lst[1::2]))

यह वास्तव में आपकी सूची का अनुसरण करने वाले कुछ पैटर्न और कुछ अंतर्निहित कार्यों का उपयोग करता है! चूंकि प्रत्येक सम इंडेक्स एक वैल्यू-टू-बी और ऑड इंडेक्स एक की-टू-बी है, इसलिए इसे केवल स्लाइस और अलग करना आसान है। फिर आप इन अलग-अलग मानों का संग्रह बनाने के लिए zip() का उपयोग कर सकते हैं और फिर dict() कंस्ट्रक्टर को कॉल करके उसमें से एक शब्दकोश निकाल सकते हैं!

4
Hamza 9 नवम्बर 2020, 23:01

मैं इस पर पुनरावृति करते हुए किसी सूची को बदलना पसंद नहीं करता। मैं इस तरह से करना पसंद करूंगा:

i = 0
while i < len(rline):
  total[rline[i]] = rline[i+1]
  i = i + 2

print(f"Dictionary: {total}")
3
Damião Martins 9 नवम्बर 2020, 22:48