Как распечатать значения из двух ключей? - PullRequest
0 голосов
/ 25 октября 2018

Поэтому у меня возникли проблемы с выводом двух значений из списка, который я создал.

По сути, я сделал список:

[
  {
    'Numbers': '1',
    'Name': 'Hello'
  },
  {
    'Numbers': '2',
    'Name': 'There'
  },
  {
    'Numbers': '3',
    'Name': 'Stack'
  },
  {
    'Numbers': '4',
    'Name': 'OVerflow'
  }
]

Прямо сейчас, если я в основном вызову эту функцию, которая

names_number ()

Это дастмне это значения.

Поэтому, конечно, вы бы использовали цикл for, который будет печатать каждый из них для своих собственных, так что в этом случае цикл выглядит следующим образом:

для i в names_number (): print (i)

Это дало бы мне:

{'Numbers': '1', 'Name': 'Hello'}
{'Numbers': '2', 'Name': 'There'}
{'Numbers': '3', 'Name': 'Stack'}

Теперь проблема в том, что я хочу, чтобы он распечатывал только

1 Hello
2 There
3 Stack

, а у меня нетИдея, как я бы в этом случае распечатывал только значения каждого из этих циклов.Я был бы признателен за любой совет или решение о том, как я могу продолжать делать вывод, как я хотел бы выше

Ответы [ 4 ]

0 голосов
/ 25 октября 2018

Разделитель по умолчанию для print представляет собой один пробел, поэтому вы используете простой цикл for:

for d in L:
    print(d['Numbers'], d['Name'])

Или используйте f-строки (Python 3.6+):

for d in L:
    print(f"{d['Numbers']} {d['Name']}")

Вот замысловатое функциональное решение:

from operator import itemgetter

fields = ('Numbers', 'Name')
print(*(f'{num} {name}' for num, name in map(itemgetter(*fields), L)), sep='\n')

1 Hello
2 There
3 Stack
4 OVerflow
0 голосов
/ 25 октября 2018

Я бы сделал это так:

for doc in lst:
    print(doc['Numbers'], doc['Name'])

, который выдает желаемый результат

0 голосов
/ 25 октября 2018

Я бы, вероятно, сделал что-то вроде этого:

item_list = [
  {
    'Numbers': '1',
    'Name': 'Hello'
  },
  {
    'Numbers': '2',
    'Name': 'There'
  },
  {
    'Numbers': '3',
    'Name': 'Stack'
  },
  {
    'Numbers': '4',
    'Name': 'OVerflow'
  }
]

for item in item_list:
    print (" ".join([item["Numbers"], item["Name"]]))

, который производит:

1 Hello
2 There
3 Stack
4 OVerflow

В значительной степени зацикливание списка и распечатка пар ключ / значение.

0 голосов
/ 25 октября 2018

Как насчет этого:

for dct in lst:
  print('{} {}'.format(dct['Numbers'], dct['Name']))

, который производит желаемое:

1 Hello
2 There
3 Stack
4 OVerflow

Обратите внимание, что если вам не важен порядок пунктов (1 Helloили Hello 1), или если вы используете Python 3.6+, вы можете использовать более элегантный:

for dct in lst:
  print('{} {}'.format(*dct.values()))
...