我有一個 dict dictA = {'/run/xy':'foo', '/run':'bar', '/run/ab/cd':'baz'}。需要根據它的鍵創建另外兩個字典。
例如,dict1應僅包含鍵中帶有一個斜線的鍵值對,并且dict2應僅包含鍵中具有多個斜線的鍵值對,如下所示:
dict1 = {'/run':'bar'}
dict2 = {'/run/xy':'foo', '/run/ab/cd':'baz'}
我嘗試了以下代碼,但出現了一些錯誤:
dictA = {'/run/xy':'foo', '/run':'bar', '/run/ab/cd':'baz'}
dict1 = {}
dict2 = {}
for k in dictA:
if len(k.split('/')) == 2:
dict1.update({k,dictA[k]})
elif len(k.split('/')) > 2:
dict2.update({k,dictA[k]})
dict1
dict2
如何完成這項作業?
uj5u.com熱心網友回復:
字串有一個count方法:
dictA = {'/run/xy':'foo', '/run':'bar', '/run/ab/cd':'baz'}
dict1 = {}
dict2 = {}
for k, v in dictA.items():
if k.count('/') == 1:
dict1[k] = v
else:
dict2[k] = v
dict1, dict2
# ({'/run': 'bar'}, {'/run/xy': 'foo', '/run/ab/cd': 'baz'})
uj5u.com熱心網友回復:
使用re.findall:
import re
dictA = {'/run/xy':'foo', '/run':'bar', '/run/ab/cd':'baz'}
dict1 = {}
dict2 = {}
for k, v in dictA.items():
num_slashes = len(re.findall(r'/', k))
if num_slashes == 1:
dict1[k] = v
elif num_slashes > 1:
dict2[k] = v
else:
pass
print(dict1)
print(dict2)
# {'/run': 'bar'}
# {'/run/xy': 'foo', '/run/ab/cd': 'baz'}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489886.html
標籤:Python
