Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.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 字符串作为关键字参数,并将str.partition()输出中的多个dict组合为一个dict_Python_String_Dictionary - Fatal编程技术网

Python 字符串作为关键字参数,并将str.partition()输出中的多个dict组合为一个dict

Python 字符串作为关键字参数,并将str.partition()输出中的多个dict组合为一个dict,python,string,dictionary,Python,String,Dictionary,我有一个字符串,如下所示: src = "raidlevel=1,slot=0,DISK=1i:1:1_1i:1:2" 我按照中的代码示例将其转换为基于分隔符= for i in src.split(','): key, sep, val = i.partition('=') dictRaid = {key.lower():val} if all(k in dictRaid for k in ('raidlevel', 'slot', 'disk')):

我有一个字符串,如下所示:

src = "raidlevel=1,slot=0,DISK=1i:1:1_1i:1:2"
我按照中的代码示例将其转换为基于分隔符=

for i in src.split(','):
    key, sep, val = i.partition('=')
    dictRaid = {key.lower():val}
    if all(k in dictRaid for k in ('raidlevel', 'slot', 'disk')):
       print "all arguments present"
       print dictRaid
我现在面临的问题是,分区函数返回多个单独的字典,因此if-all条件返回False而不是True。 如何将分区函数中的多个单独字典结果组合到一个单独的字典中

dictRaid = {}
src = "raidlevel=1,slot=0,DISK=1i:1:1_1i:1:2"
for i in src.split(','):
    key, sep, val = i.partition('=')
    dictRaid[key.lower()] = val
if all(k in dictRaid for k in ('raidlevel', 'slot', 'disk')):
    print "all arguments present"
    print dictRaid
输出:

在for循环外部声明dict dictRaid,并使用dict.update添加键值 如果一切顺利。。应该在for循环之外。 输出:

在for循环外部声明dict dictRaid,并使用dict.update添加键值 如果一切顺利。。应该在for循环之外。 您可以将dict构造函数与两项列表一起使用:

src = "raidlevel=1,slot=0,DISK=1i:1:1_1i:1:2"

dictRaid = dict(i.split('=') for i in src.lower().split(','))

print(dictRaid)

{'raidlevel': '1', 'slot': '0', 'disk': '1i:1:1_1i:1:2'}
还请注意,您的if条件可以更清楚地写为一组差异,而不是if all

您可以将dict构造函数与两项列表一起使用:

src = "raidlevel=1,slot=0,DISK=1i:1:1_1i:1:2"

dictRaid = dict(i.split('=') for i in src.lower().split(','))

print(dictRaid)

{'raidlevel': '1', 'slot': '0', 'disk': '1i:1:1_1i:1:2'}
还请注意,您的if条件可以更清楚地写为一组差异,而不是if all

为什么要更新而不仅仅是dictRaid[key.lower]=val?为什么要更新而不仅仅是dictRaid[key.lower]=val?
src = "raidlevel=1,slot=0,DISK=1i:1:1_1i:1:2"

dictRaid = dict(i.split('=') for i in src.lower().split(','))

print(dictRaid)

{'raidlevel': '1', 'slot': '0', 'disk': '1i:1:1_1i:1:2'}
check_keys = {'raidlevel', 'slot', 'disk'}

if check_keys.issubset(dictRaid):
    # do something