Получить только первые две пары ключ-значение в словаре Python - PullRequest
0 голосов
/ 01 ноября 2019

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

#my python dictionary
hunghang = {'fname':'alain', 'lname':'banilad', 'age': 26, 'city':'tokyo'}
charding = {'fname':'rio', 'lname':'talle', 'age': 23, 'city':'berlin'}
mat = {'fname':'professor', 'lname':'steeley', 'age': 29, 'city':'lisbon'}
nicole = {'fname':'denver', 'lname':'aguilar', 'age': 25, 'city':'nairobi'}

#my list of dictionaries
listofdict = [hunghang, charding, mat, nicole]

Теперь я хотел бы иметь отображение, подобноеthis:

Информация для :

  1. <пара ключ-значение # 3>
  2. <пара ключ-значение # 4>

Единственное, что я до сих пор делал, - это перебираю список и перебираю отдельные словари в списке следующим образом:

for members in listofdict:
    for (info, value) in members.items():
        if info == 'fname':
            first_name = members[info]
            continue

        if info == 'lname':
            last_name = members[info]
            continue

        if first_name and last_name:
            full_name = f"{first_name} {last_name}"
        else:
            continue
        print(f"Info for {full_name.title()} are:")
        print(f"\t{info} : {value.upper() if value is str else value}")

Ноон отображается совсем не так, как хотелось бы.

Info for Alain Banilad are:
    age : 26 
Info for Alain Banilad are:
    city : tokyo 
Info for Rio Talle are:
    age : 23 
Info for Rio Talle are:
    city : berlin 
Info for Professor Steeley are:
    age : 29 Info for
 Professor Steeley are:
    city : lisbon 
Info for Denver Aguilar are:
    age : 25 
Info for Denver Aguilar are:
    city : nairobi

Теперь мой вопрос: есть ли способ перебрать словарь, получить комбинацию (первые две пары ключ-значение) и вывести ее на консоль с форматированием, которое янамеревались?

Ответы [ 4 ]

0 голосов
/ 01 ноября 2019

Я думаю, вы, возможно, неправильно понимаете концепцию словарей на python: нет фиксированного порядка элементов, то есть нет пары «первый» или «второй». Фактически последовательность элементов может быть изменена Python. Вместо этого вы получаете доступ к данным, используя ключи, хранящиеся в словаре.

Позволяет очень тонкий код для того, что вы имеете в виду:

#my python dictionary
hunghang = {'fname':'alain', 'lname':'banilad', 'age': 26, 'city':'tokyo'}
charding = {'fname':'rio', 'lname':'talle', 'age': 23, 'city':'berlin'}
mat = {'fname':'professor', 'lname':'steeley', 'age': 29, 'city':'lisbon'}
nicole = {'fname':'denver', 'lname':'aguilar', 'age': 25, 'city':'nairobi'}

#my list of dictionaries
listofdict = [hunghang, charding, mat, nicole]

for members in listofdict:
        print("Info for {} {} are:".format(
                members["fname"], members["lname"]))
        print("\tage: {}".format(members["age"]))
        print("\tcity: {}".format(members["city"]))
0 голосов
/ 01 ноября 2019

Не упускаете ли вы реальную точку словаря? Так как он хранит предметы в ключах, вы всегда можете получить доступ к ним по ключам.

for member in listofdict:
    print(f"Dict for => {member['fname']} {member['lname']}")    

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

0 голосов
/ 01 ноября 2019

Дайте попробовать, как показано ниже.

hunghang = {'fname':'alain', 'lname':'banilad', 'age': 26, 'city':'tokyo'}
charding = {'fname':'rio', 'lname':'talle', 'age': 23, 'city':'berlin'}
mat = {'fname':'professor', 'lname':'steeley', 'age': 29, 'city':'lisbon'}
nicole = {'fname':'denver', 'lname':'aguilar', 'age': 25, 'city':'nairobi'}

listofdict = [hunghang, charding, mat, nicole]
print(repr(listofdict))

listoftuples = []
for item in listofdict:
    finame = item['fname']
    lname = item['lname']
    nametuple = (finame,lname)
    listoftuples.append(nametuple)


# Get the values like below,
print(repr(listoftuples))


# Get the values like below,
print(repr(listoftuples[0]))
print(repr(listoftuples[2]))
print(repr(listoftuples[3]))
print(repr(listoftuples[4]))
0 голосов
/ 01 ноября 2019

Не перебирайте элементы, чтобы получить полное имя;Вы четко знаете, какие значения ожидаете и хотите, поэтому используйте их.

for members in listofdict:
    full_name = f'{members["first_name"]} {members["last_name"]}'
    print(f"Info for {full_name.title()} are:")

    for (info, value) in members.items():
        if info == 'fname' or info == 'lastname':
            continue
        print(f"\t{info} : {value.upper() if value is str else value}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...