嵌套词典 - 抓取二元字段中指定字段的顶级键满足条件

发布于 2025-02-10 05:27:20 字数 668 浏览 2 评论 0 原文

这是一个简单的问题,但是我很难找到答案。数据示例:

nested = {
    "Moli": {
        "Buy": 75,
        "Sell": 53,
        "Quantity": 300,
        "TF": True},
    "Anna": {
        "Buy": 55,
        "Sell": 83,
        "Quantity": 154,
        "TF": False},
    "Bob": {
        "Buy": 25,
        "Sell": 33,
        "Quantity": 100,
        "TF": False},
    "Annie": {
        "Buy": 74,
        "Sell": 83,
        "Quantity": 96,
        "TF": True}
}

我已经得到了:

subset = [d for d in nested.values() if d['TF'] == False]

这给了我一个新的嵌套词典,其中有两个子词,而不是四个。但是,如果我只想输出名称的对象列表,该怎么办? IE [“ Anna”,“ Bob”] 。如何选择键而不是值?

This is a simple question but one which I'm having trouble finding an answer to. Data example:

nested = {
    "Moli": {
        "Buy": 75,
        "Sell": 53,
        "Quantity": 300,
        "TF": True},
    "Anna": {
        "Buy": 55,
        "Sell": 83,
        "Quantity": 154,
        "TF": False},
    "Bob": {
        "Buy": 25,
        "Sell": 33,
        "Quantity": 100,
        "TF": False},
    "Annie": {
        "Buy": 74,
        "Sell": 83,
        "Quantity": 96,
        "TF": True}
}

I've already got:

subset = [d for d in nested.values() if d['TF'] == False]

This gives me a new nested dictionary, with two sub-dictionaries instead of four. But what if I just want it to output an object list of the names. I.e. ["Anna" , "Bob"]. How do I select the keys instead of the values?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

友谊不毕业 2025-02-17 05:27:20

您很接近,可以循环浏览键而不是值。

nested = {
    "Moli": {"Buy": 75, "Sell": 53, "Quantity": 300, "TF": True},
    "Anna": {"Buy": 55, "Sell": 83, "Quantity": 154, "TF": False},
    "Bob": {"Buy": 25, "Sell": 33, "Quantity": 100, "TF": False},
    "Annie": {"Buy": 74, "Sell": 83, "Quantity": 96, "TF": True},
}

filtered = [x for x in nested.keys() if not nested[x]["TF"]]
print(filtered)

You were close, you can loop over keys instead of values.

nested = {
    "Moli": {"Buy": 75, "Sell": 53, "Quantity": 300, "TF": True},
    "Anna": {"Buy": 55, "Sell": 83, "Quantity": 154, "TF": False},
    "Bob": {"Buy": 25, "Sell": 33, "Quantity": 100, "TF": False},
    "Annie": {"Buy": 74, "Sell": 83, "Quantity": 96, "TF": True},
}

filtered = [x for x in nested.keys() if not nested[x]["TF"]]
print(filtered)
冰之心 2025-02-17 05:27:20

使用 list clastension 在词典项目项目 /代码>:键和值。如果而不是v ['tf'] - 测试“ rel =” nofollow noreferrer”>“ falsy” 对您来说是一个很好的测试:

subset = [k for k, v in nested.items() if not v['TF']]
print(subset)
# ['Anna', 'Bob']

Use list comprehension while iterating over tuples of dictionary items: keys and values. You might also be able to use a shorter not v['TF'] if "falsy" is a good enough test for you:

subset = [k for k, v in nested.items() if not v['TF']]
print(subset)
# ['Anna', 'Bob']
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文