2013-01-03 41 views
5

Có vẻ đơn giản, nhưng khó nắm bắt, muốn xây dựng một dict từ đầu vào của cặp [khóa, giá trị] được phân tách bằng dấu cách chỉ bằng một câu lệnh Python. Đây là những gì tôi có cho đến nay:Thực hiện một từ điển trong Python từ các giá trị đầu vào

d={} 
n = 3 
d = [ map(str,raw_input().split()) for x in range(n)] 
print d 

Input:

A1023 CRT 
A1029 Regulator 
A1030 Therm 

Output mong muốn:

{'A1023': 'CRT', 'A1029': 'Regulator', 'A1030': 'Therm'} 

Trả lời

3

sử dụng str.splitines()str.split():

In [126]: strs="""A1023 CRT 
    .....: A1029 Regulator 
    .....: A1030 Therm""" 

In [127]: dict(x.split() for x in strs.splitlines()) 
Out[127]: {'A1023': 'CRT', 'A1029': 'Regulator', 'A1030': 'Therm'} 

str.splitlines([keepends]) -> list of strings

Return a list of the lines in S, breaking at line boundaries. Line breaks are not included in the resulting list unless keepends is given and true.

str.split([sep [,maxsplit]]) -> list of strings

Return a list of the words in the string S, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done. If sep is not specified or is None, any whitespace string is a separator and empty strings are removed from the result.

+1

argv! Bạn đánh bại tôi với nó bằng chính xác một giây. Đang xóa mỏ – inspectorG4dget

1

Giả sử bạn có các văn bản trong biến s:

dict(map(lambda l: l.split(), s.splitlines())) 
4

Đây là những gì chúng tôi đã kết thúc bằng:

n = 3 
d = dict(raw_input().split() for _ in range(n)) 
print d 

Input:

A1023 CRT 
A1029 Regulator 
A1030 Therm 

Output:

{'A1023': 'CRT', 'A1029': 'Regulator', 'A1030': 'Therm'} 
+0

Tại sao chỉ _ hoạt động ở trên cho vòng lặp? –

+0

Tên biến _ là một thành ngữ truyền thống cho "Không quan tâm". Như vậy, bất kỳ tên biến nào cũng đủ cho dù giá trị của nó không bao giờ được sử dụng. –

0
for i in range(n): 
    data = input().split(' ') 
    d[data[0]] = data[1] 
for keys,values in d.items(): 
    print(keys) 
    print(values) 
1
n = int(input())   #n is the number of items you want to enter 
d ={}      
for i in range(n):   
    text = input().split()  #split the input text based on space & store in the list 'text' 
    d[text[0]] = text[1]  #assign the 1st item to key and 2nd item to value of the dictionary 
print(d) 

INPUT:

3 

A1023 CRT 

A1029 Regulator 

A1030 Therm 

Chú ý: Tôi đã thêm một dòng thêm cho mỗi đầu vào để nhận mỗi đầu vào trên dây chuyền cá nhân trên trang web này. Khi đặt mà không có một dòng phụ tạo ra một dòng.

OUTPUT:

{'A1023': 'CRT', 'A1029': 'Regulator', 'A1030': 'Therm'} 
+0

Điều này trả về lỗi: Cú phápError: EOF bất ngờ khi phân tích cú pháp khi tôi nhập A1023 CRT. –

0
n=int(input()) 
pair = dict() 

for i in range(0,n): 
     word = input().split() 
     key = word[0] 
     value = word[1] 
     pair[key]=value 

print(pair) 
+0

Mặc dù đoạn mã này có thể là giải pháp, [bao gồm giải thích] (https://meta.stackexchange.com/questions/114762/explaining-entirely-‌ code-based-answers) thực sự giúp cải thiện chất lượng của bạn bài đăng. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. –

+0

Tnq cho đề xuất tốt cho ur. – rashedcs

Các vấn đề liên quan