Как л oop в словарях - PullRequest
       25

Как л oop в словарях

0 голосов
/ 01 апреля 2020

У меня есть следующий пример словарей в словаре, как я могу oop и показывать ключ / значения только в поле данных. Когда я запускаю ниже, я получаю следующую ошибку. Не уверен, что я делаю не так. Любой совет, пожалуйста.

    in1 = {
    "data": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg",
        "bio": "This is my bio",
        "website": "http://snoopdogg.com",
        "counts": {
            "media": 1320,
            "follows": 420,
            "followed_by": 3410
        }
}}
print(in1['data']['id'])

for k , v in in1.items():

    print("\n RAW DATA:" + k)
    u_info = v['username'] + ' ' + v['full_name']
    print("Thanks for the info : " + u_info)

    for ke,v1 in v.items():
        print("Keys ", ke['website'])
        print("Keys ", ke['counts'])

Ошибка, которую я получаю

python3 dictionary_example.py
1574083

 RAW DATA:data
Thanks for the info : snoopdogg Snoop Dogg
Traceback (most recent call last):
  File "dictionary_example.py", line 24, in <module>
    print("Keys ", ke['website'])
TypeError: string indices must be integers

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

как и ответ @Raju, вы можете получить значения ['website'] и ['counts'] без l oop, потому что это единственный словарь (на основе вашего вопроса).

просто попробуйте:

print(in1['data']['id']) print(in1['data']['website']) print(in1['data']['counts'])

0 голосов
/ 01 апреля 2020

вы печатаете u_info внутри кавычек, вызывающих проблему. В вашем коде вы пытаетесь использовать ключ k1 в качестве словаря, но это строка. Если вы хотите напечатать значения website и counts, нет необходимости использовать для l oop, вы можете напрямую использовать v['website'] и v['counts'].

in1 = {
    "data": {
        "id": "1574083",
        "username": "snoopdogg",
        "full_name": "Snoop Dogg",
        "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg",
        "bio": "This is my bio",
        "website": "http://snoopdogg.com",
        "counts": {
            "media": 1320,
            "follows": 420,
            "followed_by": 3410
        }
}}

print(in1['data']['id'])

for k , v in in1.items():
    print("\n RAW DATA:" + k)
    u_info = v['username'] + ' ' + v['full_name']
    print("\t" + u_info)

    print("Keys ", v['website'])
    print("Keys ", v['counts'])
...