3

我有一本字典,其中某些键的值可能很长。我想将此字典转换为字符串并将其发送到服务器。但是,当我使用 str(dict) 函数将其转换为字符串时,对于具有长值的值后缀为“L”。当我将它发送到服务器时,它会产生问题。所以任何人都可以建议我一种更简单的方法来避免使用“L”后缀

4

3 回答 3

3

我不确定你的用例是什么,但为了解决这个问题,很可能是你会遇到的下一个问题,我建议使用 json。

import json
a = {'a': 10, 'b': 1234567812345678L}
print json.dumps(a)

# output:
{"a": 10, "b": 1234567812345678}
于 2013-07-25T02:22:12.037 回答
1

这是因为调用strdict 仍会调用repr以获取其内容的表示。

您应该只编写自己的函数来迭代 dict

>>> D = {10000000000000000+n:n for n in range(10)}
>>> print D
{10000000000000000L: 0, 10000000000000001L: 1, 10000000000000002L: 2, 10000000000000003L: 3, 10000000000000004L: 4, 10000000000000005L: 5, 10000000000000006L: 6, 10000000000000007L: 7, 10000000000000008L: 8, 10000000000000009L: 9}
>>> print "{{{}}}".format(', '.join("{}: {}".format(*i) for i in D.items()))
{10000000000000000: 0, 10000000000000001: 1, 10000000000000002: 2, 10000000000000003: 3, 10000000000000004: 4, 10000000000000005: 5, 10000000000000006: 6, 10000000000000007: 7, 10000000000000008: 8, 10000000000000009: 9}
于 2013-07-25T01:45:02.943 回答
0

展开 gnibbler 的代码与此接近:

# put all key-value-pairs into a list, formatted as strings
tmp1 = []
for i in D.items()
    tmp2 = "{}: {}".format(*i)
    tmp1.append(tmp2)

# create a single string by joining the elements with a comma
tmp3 = ", ".join(tmp1)

# add curly braces
tmp4 = "{{{}}}".format(tmp3)

# output result
print tmp4

他构造的内部部分称为生成器表达式。它们效率更高一些,因为它们不需要临时列表(或元组)“tmp1”并且允许非常简洁的语法。此外,它们可以使不熟悉该结构的人几乎无法阅读代码,如果您有这个问题,请尝试从内到外阅读它。;^)

于 2013-07-25T05:24:13.230 回答