Yaml 文件解析迭代值

Yaml file parsing iterating values

我有一个具有以下结构的 yaml 文件:

User1:
  email: test@test.com
  firstname: test
  lastname: user
  id: AZTEST123
  role: manager
  team: test

我希望能够遍历此 yaml 文件并使用我在下面编写的脚本中的值:

def get_users(yaml_file="test.yml"):
  with open(yaml_file, 'r') as stream:
    try:
      data = yaml.load(stream)
      print(data)
    except yaml.YAMLError as exc:
      print(exc)
  return data

def create_user(users):
  for user in users:
    print(user[1])
    try:
      print(user['email'])
      url = 'https://api.test.com/users'
      payload = {
          'user': {
              'type': 'user',
              'name': user['firstname'] + ' ' + user['lastname'],
              'email': user['email'],
              'role': user['role']
          }
      }
      r = requests.post(url, headers=headers, data=json.dumps(payload))
      print ('Status Code: {code}').format(code=r.status_code)
      print (r.json())
      sc.api_call(
        "chat.postMessage",
        channel="#test",
        text="User {user} has been added to Test :tada:".format(user=user['firstname']),
        user="test")
    except requests.ConnectionError as error_message:
      print (error_message)

users = get_users()

create_user(users)

当我从我的代码打印接收到的 print(data) 时 returns:

{'User1': {'email': 'test@test.com', 'firstname': 'test', 'lastname': 'user', 'id': 'AZTEST123', 'role': 'manager', 'team': 'test'}}

但是当我尝试使用这些值时:user['firstname'] 我得到一个错误:

TypeError: string indices must be integers

当我 print(user[0]) 它 returns:

U

我在这里遗漏了什么,我如何遍历这些项目?

for 循环,遍历字典,返回键。所以 user 将具有值 User1.

您想做的是:

for username in users:
    user = users[username]
    print(user['firstname'])