我有一个字典作为输出,有一些数字:
example_dict = dict{'X': OrderedDict, 'Y': OrderedDict}
print(example_dict)
example_dict = {'X': OrderedDict(['Value1', '100000',
'Value2', '10000',
'Value3', '1000'])
'Y': OrderedDict(['Value4', '2000',
'Value5', '20000',
'Value6', '200000'])}
我希望Python能够使用自动分配到正确位置的逗号打印此输出,以便新输出变为:
example_dict = {'X': OrderedDict(['Value1', '100,000',
'Value2', '10,000',
'Value3', '1000'])
'Y': OrderedDict(['Value4', '2000',
'Value5', '20,000',
'Value6', '200,000'])}
这些值在整个字典中可以是随机的,而不是我上面描述的方式。在一些地方,有数十万人完全失踪,而有些人只有数千人。也就是说,我需要定义函数,使得字典中有5位数的任何值在第四位和第三位之间插入一个',',依此类推。
答案 0 :(得分:1)
不确定你有OrderedDict
种,但我已根据我的理解进行了尝试。
您可以添加带自定义功能的逗号,并根据需要替换innerdict值。
希望这会有所帮助。
示例代码
from collections import OrderedDict
#Build your dict (sort of)
x = ['Value1', '100000', 'Value2', '10000', 'Value3', '1000']
y = ['Value4', '2000', 'Value5', '20000', 'Value6', '200000']
z = {'X': OrderedDict([x[i:i+2] for i in range(0, len(x),2)]),
'Y': OrderedDict([y[i:i+2] for i in range(0, len(y),2)]),
}
#function to set commas, you can expand as needed
def getNum(a):
if len(a) == 5: return a[0:2] + ',' + a[2:]
elif len(a) == 6: return a[0:3] + ',' + a[3:]
else: return a
#Add commas to inner dict
for k,innerdict in z.iteritems():
for k2,v2 in innerdict.iteritems():
innerdict[k2] = getNum(v2)
<强>结果强>
#`z` before changes
>>>
{'Y': OrderedDict([('Value4', '2000'), ('Value5', '20000'), ('Value6', '200000')]),
'X': OrderedDict([('Value1', '100000'), ('Value2', '10000'), ('Value3', '1000')])}
#`z` after changes
{'Y': OrderedDict([('Value4', '2000'), ('Value5', '20,000'), ('Value6', '200,000')]),
'X': OrderedDict([('Value1', '100,000'),
('Value2', '10,000'), ('Value3', '1000')])}
>>>