简体   繁体   English

我如何打印你好和所有女性成员

[英]How can I print hello and all female members

test.json测试文件

{
    "A Company":[{"female":["Jessica","Eve"]},{"male":["Mike","Peter"]}],
    "B Company":[{"female":["Laura","Pamela"]},{"male":["Mark","Steve"]}]
}

test.py测试文件

import json

f = open('test.json',)
data = json.load(f)
for v in data.values():
    for element in v:
        print(element)

Output:输出:

{'female': ['Jessica', 'Eve']}
{'male': ['Mike', 'Peter']}
{'female': ['Laura', 'Pamela']}
{'male': ['Mark', 'Steve']}

How can I print this: "Hello Jessica" "Hello Eve" "Hello Laura" "Hello Pamela"?我该如何打印:“你好杰西卡”“你好夏娃”“你好劳拉”“你好帕梅拉”?

You can use an iterator to extract then names and a for-loop to print the greetings without building an intermediate list:您可以使用迭代器提取然后名称和 for 循环来打印问候语,而无需构建中间列表:

data = {
    "A Company":[{"female":["Jessica","Eve"]},{"male":["Mike","Peter"]}],
    "B Company":[{"female":["Laura","Pamela"]},{"male":["Mark","Steve"]}]
}

names = (name for groups in data.values() 
              for group in groups 
              for name in group.get("female",[]))


for name in names: print("Hello",name)

Hello Jessica
Hello Eve
Hello Laura
Hello Pamela

You missed the innermost loop, where you iterate the inner records and check if they are Males or Females.你错过了最里面的循环,在那里你迭代内部记录并检查它们是男性还是女性。

Please see the example:请看例子:

import json

json_file = """
{
    "A Company":[{"female":["Jessica","Eve"]},{"male":["Mike","Peter"]}],
    "B Company":[{"female":["Laura","Pamela"]},{"male":["Mark","Steve"]}]
}
"""

parsed = json.loads(json_file)

for val in parsed.values():
    for record in val:
        # This below is the innermost loop
        for key, value in record.items():
            # If it's female then we use list comprehension to print the greetings
            if key == "female":
                [print(f"Hello {name}") for name in value]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM