Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从第二个字典更新字典键和值_Python_Loops_Dictionary - Fatal编程技术网

Python 从第二个字典更新字典键和值

Python 从第二个字典更新字典键和值,python,loops,dictionary,Python,Loops,Dictionary,协助从原始数据dict更新工作数据dict。如果工作数据中已存在密钥,则更新值。如果不是,则创建新的键和值 working_data = {newkey1 : '', newkey2 : '' , newkey3: '', newkey4: ''} raw_data = {raw1: 'var1', raw2: 'var2', raw3: 'var3', raw4: 'var4} 如果要替换或添加工作数据: for k, v in {k.replace('raw','newkey'): v

协助从原始数据dict更新工作数据dict。如果工作数据中已存在密钥,则更新值。如果不是,则创建新的键和值

working_data = {newkey1 : '', newkey2 : '' , newkey3: '', newkey4: ''} 

raw_data = {raw1: 'var1', raw2: 'var2', raw3: 'var3', raw4: 'var4}

如果要替换或添加工作数据:

for k, v in {k.replace('raw','newkey'): v for k,v in raw_data.items()}.items():
    working_data[k] = v
for k, v in {k.replace('raw','newkey'): v for k,v in raw_data.items()}.items():
    if k in working_data:
        working_data[k] = v
如果您只想更新数字(例如,如果
raw\u data
中有
raw5
,而
working\u data
中没有
newkey5
,并且您不想将
newkey5
添加到
working\u data

for k, v in {k.replace('raw','newkey'): v for k,v in raw_data.items()}.items():
    working_data[k] = v
for k, v in {k.replace('raw','newkey'): v for k,v in raw_data.items()}.items():
    if k in working_data:
        working_data[k] = v

键看起来像是变量名。这会立即向您提出如何插入这些值的问题。您不能将变量名用作键。使用类似于
working[new1]
的内容对字典进行索引将使
working
看起来像
{new1的值:'var1'}因此,如果
new1='mystring'
,您将拥有
{'mystring':'var1'}
。我假设您希望保留这些变量的名称,因此您必须想出一种序列化变量名称的方法,可能是通过硬编码另一个字典,其中包含键值映射,该映射将每个
newX
映射为它的字符串表示形式。

以下是仅包含所需值的方法

result = {k: v for k, v in working_data.items() if v!= ''}

如何在
原始数据
工作数据
之间建立关联?是尾随数字吗?谢谢!这样就行了。你能帮我添加一个if语句吗?
原始数据
有时最多可以有30项,但我只想在
工作数据
中显示静态的15项。如何只写入拔出你想要的钥匙,然后扔掉剩下的?这有意义吗?@Mark M。这个回答有用吗?如果有,你能给我投票吗?我是新来的,这会对我有很大帮助。谢谢!