2010-03-03 40 views
10

Cách tốt nhất để chuyển đổi các chuỗi int, long's, double thành chuỗi và ngược lại trong python.Chuyển đổi loại Python

Tôi đang lặp qua danh sách và chuyển số lần chờ đến một lệnh chính tắc cần được chuyển thành chuỗi unicode.

Tôi

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

Tại sao một số trong những điều rõ ràng nhất nên phức tạp?

+1

"đi qua chờ đợi đến một dict cần được biến thành một chuỗi unicode"? Làm thế nào là "rõ ràng"? Bạn đang cố gắng để thực hiện? –

+0

Trong JAVA, bạn có thể gọi phương thức toString() mà bạn có thể nghĩ rõ ràng là có sẵn trong Python. Và nó tồn tại trong Python thông qua phương thức str(). Chỉ cần không phải trên chính Object. – Dave

+1

"không phải trên chính đối tượng". 'str (bất cứ điều gì)' hoạt động cho mọi loại có - theo định nghĩa. Đối với các lớp của riêng bạn, 'def __str __ (self)' để điều chỉnh những gì được trả về (nó giống như 'toString' của Java) Bạn đang gặp vấn đề gì? Bạn có thể cung cấp mã và đầu ra mẫu không? –

Trả lời

2

Bạn có thể làm điều đó như thế này bằng Python 2.x:

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

hoặc bằng Python 3.x:

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

Lưu ý rằng chuỗi bằng Python 3 cũng giống như chuỗi unicode trong Python 2.

+0

Cách OP sử dụng n [0] không giống như là khóa –

+0

@gnibbler: Vâng, đó là cách tôi hiểu mã giả của mình. – AndiDog

+0

Bạn đã hiểu đúng, đây là câu trả lời đúng Cảm ơn bạn! – Dave

37

Để chuyển đổi từ một loại số thành một chuỗi:

str(100) 

Để chuyển đổi từ một chuỗi đến một int:

int("100") 

Để chuyển đổi từ một chuỗi đến một float:

float("100") 
+0

Cảm ơn, tôi đã tìm thấy nó trong tài liệu. Nhưng tôi đánh giá cao câu trả lời của bạn rất nhiều. – Dave

+0

Câu trả lời của bạn cũng đúng – Dave

+0

Đây là câu trả lời hay hơn nhiều. Tôi không biết tại sao nó không phải là câu trả lời được chấp nhận. –

0

Bạn có thể làm theo cách này

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

Có thể điều này rõ ràng hơn nếu chỉ có 2 hoặc 3 khóa/giá trị

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

Tôi nghĩ rằng đây sẽ là tốt hơn nếu có nhiều hơn 3 phím/giá trị

for n in l: 
    dict(zip(('my_key','myother_key'),map(unicode,n))) 
Các vấn đề liên quan