【问题标题】:Python Type ConversionPython 类型转换
【发布时间】:2011-01-23 10:30:11
【问题描述】:

在python中将int、long、double转换为字符串的最佳方法是什么。

我正在遍历一个列表并将 long 传递给一个应该转换为 unicode 字符串的 dict。

我愿意

for n in l:  
    {'my_key':n[0],'my_other_key':n[1]}

为什么一些最明显的事情如此复杂?

【问题讨论】:

  • “将 long 传递给应该变成 unicode 字符串的 dict”?这怎么“明显”?您想要完成什么
  • 在 JAVA 中,您可以调用您可能认为在 Python 中显然可用的 toString() 方法。它确实通过 str() 方法存在于 Python 中。只是不在对象本身上。
  • “不在对象本身”。 str( anything ) 适用于所有类型——根据定义。对于您自己的课程,def __str__(self) 来定制返回的内容(就像 Java 的 toString)您有什么实际问题?能否提供代码和示例输出?

标签: python types int


【解决方案1】:

从数字类型转换为字符串:

str(100)

从字符串转换为整数:

int("100")

从字符串转换为浮点数:

float("100")

【讨论】:

  • 谢谢,我在文档中找到了。但我非常感谢你的回答。
  • 这是一个更好的答案。我不知道为什么它不是公认的答案。
  • @ScottDavidTesler 我想我是唯一一个在 SO 中反复说这句话的人;)
【解决方案2】:

您可以在 Python 2.x 中这样做:

>>> l = ((1,2),(3,4))
>>> dict(map(lambda n: (n[0], unicode(n[1])), l))
{1: u'2', 3: u'4'}

或在 Python 3.x 中:

>>> l = ((1,2),(3,4))
>>> {n[0] : str(n[1]) for n in l}
{1: '2', 3: '4'}

请注意,Python 3 中的字符串与 Python 2 中的 unicode 字符串相同。

【讨论】:

  • OP 使用 n[0] 的方式看起来不像是键
  • 这个 cide,虽然有效,但也很难阅读。阅读的代码多于编写的代码,这就是为什么您应该使用 Mark Byers 答案中的代码。
【解决方案3】:

你可以这样做

for n in l:
    {'my_key':unicode(n[0]),'my_other_key':unicode(n[1])}

如果只有 2 或 3 个键/值,这可能会更清楚

for my_value, my_other_value in l:
    {'my_key':unicode(my_value),'my_other_key':unicode(my_other_value)}

我认为如果有 3 个以上的键/值会更好

for n in l:
    dict(zip(('my_key','myother_key'),map(unicode,n)))

【讨论】:

    猜你喜欢
    • 2018-03-07
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多