python - извлечь первый элемент из кортежа - PullRequest
0 голосов
/ 01 августа 2020

У меня есть массив кортежей, и я пытаюсь извлечь первый элемент, но он дает случайный результат.

import operator

c_details=[('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]
for mapping in c_details:
        source_name=map(operator.itemgetter(0), mapping)
        print(source_name)

OUTPUT:
<map object at 0x01959358>
<map object at 0x01959148>

Затем я попробовал это.

source_name=list(map(operator.itemgetter(0), mapping))

output:
Traceback (most recent call last):
  File "c:/Users/rbhuv/Desktop/code/bqshift.py", line 26, in <module>
    source_name=list(map(operator.itemgetter(0), mapping))
TypeError: 'NoneType' object is not subscriptable

Может кто-нибудь помогите мне решить это? (это python 3.8)

Ответы [ 4 ]

2 голосов
/ 01 августа 2020

Он не дает вам случайного вывода, но сообщает вам, что map(...) возвращает генератор . Вместо этого вы можете использовать простой список:

c_details = [('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]
lst = [tpl[0] for tpl in c_details]
print(lst)

Что дает

['id', 'name']

Пожалуйста, go вперед и прочтите что-нибудь о генераторах (например, здесь ), они довольно мощные и полезные в Python.

0 голосов
/ 01 августа 2020

Просто разделите каждый элемент из кортежа отдельно, присвоив его значение новой переменной, как показано ниже:

c_details=[('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]

for entry in c_details:
  ele1, ele2, ele3, ele4, ele5 = entry
  print(ele1)
0 голосов
/ 01 августа 2020

как насчет того, чтобы вы изменили свой код следующим образом:

import operator

c_details=[('id', 'integer', None, 32, 0), ('name', 'character varying', 10, None, None)]
for mapping in c_details:
        print(mapping[0])
0 голосов
/ 01 августа 2020

Первый элемент каждого кортежа просто:

mapping[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...