将 python 字典转换为字符串
convert python dictionary to string
我有一份 python 词典的列表。如何从
转换 python 字典
{'foo1':['bar1','bar2'] , 'foo2':['bar3']}
{'foo3':['bar4','bar5','bar6'] , 'foo4':['bar7','bar8','bar9']}
.
.
.
{'foo5':['bar10'] , 'foo6':['bar11','bar12']}
{'foo7':['bar13','bar14'] , 'foo8':['bar15','bar16','bar17','bar18']}
至
{foo1 = ['bar1','bar2'] , foo2 = ['bar3']}
{foo3 = ['bar4','bar5','bar6'] , foo4 = ['bar7','bar8','bar9']}
.
.
.
{foo5 = ['bar10'] , foo6 =['bar11','bar12']}
{foo7 = ['bar13','bar14'] , foo8 = ['bar15','bar16','bar17','bar18']}
需要将其输出到 icinga 词典的文件中。
您可以遍历键和值,然后用 ,
连接它们并用 {}
:
包围它们
def icinga_form(d):
items = ', '.join(
'{} = {}'.format(key, value) for key, value in d.items()
)
return '{%s}' % (items,)
然后用地图将其应用于每个项目:
list_of_dicts = [
{'foo1': ['bar1', 'bar2'], 'foo2': ['bar3']},
{'foo3': ['bar4', 'bar5', 'bar6'], 'foo4': ['bar7', 'bar8', 'bar9']},
...,
{'foo5': ['bar10'], 'foo6': ['bar11', 'bar12']},
{'foo7': ['bar13', 'bar14'], 'foo8': ['bar15', 'bar16', 'bar17', 'bar18']}
]
list_of_icinga = map(icinga_form, list_of_dicts)
for s in list_of_icinga:
print(s)
{foo1 = ['bar1', 'bar2'], foo2 = ['bar3']}
{foo3 = ['bar4', 'bar5', 'bar6'], foo4 = ['bar7', 'bar8', 'bar9']}
...
{foo5 = ['bar10'], foo6 = ['bar11', 'bar12']}
{foo7 = ['bar13', 'bar14'], foo8 = ['bar15', 'bar16', 'bar17', 'bar18']}
如果您希望它是那个确切的字符串(我不知道为什么)这应该有效:
def dict2str(dict):
mystr = ''
for item in dict:
if mystr == '':
mystr = item + ' = ' + str(dict[item])
else:
mystr = mystr + ' , ' + item + ' = ' + str(dict[item])
mystr = "{" + mystr + "}"
return(mystr)
但请记住,字典没有排序,因此您可能无法返回准确的模式。
我有一份 python 词典的列表。如何从
转换 python 字典{'foo1':['bar1','bar2'] , 'foo2':['bar3']}
{'foo3':['bar4','bar5','bar6'] , 'foo4':['bar7','bar8','bar9']}
.
.
.
{'foo5':['bar10'] , 'foo6':['bar11','bar12']}
{'foo7':['bar13','bar14'] , 'foo8':['bar15','bar16','bar17','bar18']}
至
{foo1 = ['bar1','bar2'] , foo2 = ['bar3']}
{foo3 = ['bar4','bar5','bar6'] , foo4 = ['bar7','bar8','bar9']}
.
.
.
{foo5 = ['bar10'] , foo6 =['bar11','bar12']}
{foo7 = ['bar13','bar14'] , foo8 = ['bar15','bar16','bar17','bar18']}
需要将其输出到 icinga 词典的文件中。
您可以遍历键和值,然后用 ,
连接它们并用 {}
:
def icinga_form(d):
items = ', '.join(
'{} = {}'.format(key, value) for key, value in d.items()
)
return '{%s}' % (items,)
然后用地图将其应用于每个项目:
list_of_dicts = [
{'foo1': ['bar1', 'bar2'], 'foo2': ['bar3']},
{'foo3': ['bar4', 'bar5', 'bar6'], 'foo4': ['bar7', 'bar8', 'bar9']},
...,
{'foo5': ['bar10'], 'foo6': ['bar11', 'bar12']},
{'foo7': ['bar13', 'bar14'], 'foo8': ['bar15', 'bar16', 'bar17', 'bar18']}
]
list_of_icinga = map(icinga_form, list_of_dicts)
for s in list_of_icinga:
print(s)
{foo1 = ['bar1', 'bar2'], foo2 = ['bar3']}
{foo3 = ['bar4', 'bar5', 'bar6'], foo4 = ['bar7', 'bar8', 'bar9']}
...
{foo5 = ['bar10'], foo6 = ['bar11', 'bar12']}
{foo7 = ['bar13', 'bar14'], foo8 = ['bar15', 'bar16', 'bar17', 'bar18']}
如果您希望它是那个确切的字符串(我不知道为什么)这应该有效:
def dict2str(dict):
mystr = ''
for item in dict:
if mystr == '':
mystr = item + ' = ' + str(dict[item])
else:
mystr = mystr + ' , ' + item + ' = ' + str(dict[item])
mystr = "{" + mystr + "}"
return(mystr)
但请记住,字典没有排序,因此您可能无法返回准确的模式。