не в состоянии получить значение из словаря - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь перебрать диктовку и получить все значения для ключа «PolicyName».Это мой код:

if (str(account_id)== "010123456"):
                    client = boto3.client('iam', region_name='us-east-1')
                    roles = client.list_roles()
                    attached_policy_dict = client.list_attached_role_policies(RoleName='sf-someRoleName')
                    attached_policy = json.dumps(attached_policy_dict)
                    for k,v in attached_policy_dict.items():
                        print(['AttachedPolicies']['PolicyName'])
                        # I also tried
                        print['PolicyName']

    attached_policy_dict = {
      "AttachedPolicies": [
        {
          "PolicyName": "sfDenyNetworkActions",
          "PolicyArn": "arn:aws:iam::56012365:policy/sfDenyNetworkActions"
        },
        {
          "PolicyName": "sf-csdc-developer-policy",
          "PolicyArn": "arn:aws:iam::563012454:policy/sf-policyname"
        }

Это ошибка, которую я получаю: {

"errorMessage": "list indices must be integers or slices, not str",
  "errorType": "TypeError",
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      35,
      "lambda_handler",
      "print(['AttachedPolicies']['PolicyName'])"
    ]

1 Ответ

0 голосов
/ 08 марта 2019

Это происходит потому, что значение "AttachedPolicies" на самом деле является списком диктов.В противном случае вы даже не сможете иметь внутри несколько ключей с одинаковым именем.

Попробуйте вместо этого:

for d in attached_policy_dict["AttachedPolicies"]:
    print(d["PolicyName"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...