将嵌套键名存储在变量中

鸭狩猎二重奏

我有一本foo可能包含0..x个键的字典,其中一些键嵌套。我有一个键列表,如果它们存在于中foo,我想bar使用不同的键名将它们的值添加到不同的字典中由于我不知道每个键是否存在foo,我需要检查它们是否在字典中存在,并为其分配值,barNone好像它们不存在一样。例如:

foo = {"ex1": "1",
       "ex2": "2",
       "ex3": {"ex3nest": "3"},
       "ex4": "4",
       "ex5": "5"}

field_mappings = {"bar1": "ex1",
                  "bar2": "ex2",
                  "bar4": "ex4"}

bar = {}
for key, value in field_mappings.items():
    bar[key] = foo[value] if value in foo else None

bar的值将正确为:

{"bar1": "1", "bar2": "2", "bar4": "4"}

但是,我想向其中添加一个bar包含嵌套ex3nest键值的键,例如:

field_mappings = {"bar1": "ex1",
                  "bar2": "ex2",
                  "bar3": key for ex3nest here,
                  "bar4": "ex4"}

我看不到可以分配给bar3密钥的任何值,以便将其插入value循环中ex3nest在尝试执行操作时,是否有办法在字符串中存储嵌套键名,或者从这里开始我的方法是完全错误的?

贝蒂达

我相信有更好的方法,但是我会使用ex3.ex3neststyle作为键(从js对象中借用的风格)。

foo = {
    "ex1": "1",
    "ex2": "2",
    "ex3": {
        "ex3nest": "3"
    },
    "ex4": "4",
    "ex5": "5",
    "ex6": {
        "ex6nest1": {
            "ex6nest2": "6"
        }
    },
    "ex8": {
        "ex8nest1": {
            "ex8nest2": "8"
        }
    },
}

field_mappings = {
    "bar1": "ex1",
    "bar2": "ex2",
    "bar3": "ex3.ex3nest",
    "bar4": "ex4",
    "bar5": "ex5",
    "bar6": "ex6.ex6nest1.ex6nest2", # 2 levels deep
    "bar7": "ex7", # doesn't exists
    "bar8": "ex8.INVALID_KEY", # oops!
}

bar = {}
for key, value in field_mappings.items():
    nested_keys = value.split(".")
    
    bar_value = foo
    for curr_key in nested_keys:
        bar_value = bar_value.get(curr_key, None)
        
        if bar_value is None:
            break

    bar[key] = bar_value

print(bar)

输出,

{'bar1': '1', 'bar2': '2', 'bar3': '3', 'bar4': '4', 'bar5': '5', 'bar6': '6', 'bar7': None, 'bar8': None}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在java脚本中从json获取键的值(将键名存储在变量中并使用它)

来自分类Dev

将值存储在嵌套的for循环中的不同变量中

来自分类Dev

检查嵌套JSON中的键名

来自分类Dev

检查嵌套json中的键名

来自分类Dev

将变量存储在模块中

来自分类Dev

将路径存储在变量中

来自分类Dev

将MySqlDataReader存储在变量中

来自分类Dev

将时间存储在变量中

来自分类Dev

将IN值存储在变量中

来自分类Dev

将行存储在变量中

来自分类Dev

将XML存储在嵌套字典中

来自分类Dev

将grep中的匹配存储在变量中

来自分类Dev

将InputField值存储在变量中-UNITY

来自分类Dev

将Numpy数组索引存储在变量中

来自分类Dev

将JavaScript变量存储到数组中

来自分类Dev

将powershell命令的输出存储在变量中

来自分类Dev

jQuery-将文本存储在变量中

来自分类Dev

将依赖版本存储在gradle的变量中

来自分类Dev

如何将ERRORLEVEL存储在变量中?

来自分类Dev

将长变量存储在EEPROM中

来自分类Dev

将wc的结果存储在变量中

来自分类Dev

将Javascript代码存储在javascript变量中

来自分类Dev

Bash将grep存储到变量中

来自分类Dev

将变量存储在外部文件中

来自分类Dev

Python-将函数存储在变量中

来自分类Dev

将转换后的值存储在变量中

来自分类Dev

将时间输出存储在变量中

来自分类Dev

将数组存储在foreach内的变量中

来自分类Dev

将列结果存储在变量中