【发布时间】:2013-11-18 13:28:22
【问题描述】:
我有这些从标准输入读取的单行字典。
def gen_with appropriate_name():
for n, line in enumerate(sys.stdin):
d = ast.literal_eval(line)
items = d.values()[0].items()
items.sort(key = lambda itm: itm[0])
yield {n+1: {i+1:item[1] for i, item in enumerate(items)}}
d = gen_with appropriate_name() # prime the generator
d.next()
for thing in d:
print thing
如果您打印“d”,那么我会得到 o/p 作为字典,如下所示。
{ 1 : {'1': 5, '2': 6, '3': 0} }
{ 2 : {'1': 6, '2': 4, '3': 0} }
{ 3 : {'1': 2, '2': 9, '3': 1} }
我想把它们转换成这个:
1 1: 5 2: 6 3: 0
2 1: 6 2: 4 3: 0
3 1: 2 2: 9 3: 1
因为字典没有 replace 或 re.sub 方法。格式化它们变得复杂。另外,我无法将 dict 转换为字符串然后进行格式化。
for item in [str(k) + " " + "".join(str(k1) + ": " + str(v1) + " " for k1, v1 in v.items()) for k, v in d.items()]:
print item
【问题讨论】:
-
我没有看到多行字典,我看到三个单独的单行字典。您如何存储这些字典?
-
您是如何从标准输入中读取字典的?你在 Python 2 中做
input吗?如果是这样,请尝试raw_input,无论输入是否像 Python 文字,它都会返回一个字符串。 -
@Blckknght 检查我上面的代码。就这样完成了
-
@Marius 不想存储它们
标签: python regex string dictionary