Hướng dẫn python input string to dictionary - chuỗi nhập python vào từ điển

Tôi có 4 dòng trong đầu vào trông giống như:

first 10
second 20
third 30
fourth 40

Và tôi muốn tạo một dict bằng các từ là khóa và số là giá trị:

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}

Làm thế nào để làm điều này bằng cách sử dụng sự hiểu biết? Vì vậy, điều này đang hoạt động:

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]

Và đây không phải là:

x = {s: v for k in range(4) for s, v in input().split()}

Đã hỏi ngày 26 tháng 6 năm 2017 lúc 11:14Jun 26, 2017 at 11:14

Hướng dẫn python input string to dictionary - chuỗi nhập python vào từ điển

Mặc dù Jean đã cung cấp một câu trả lời, nhưng tôi nghĩ rằng tôi cũng sẽ thêm điều này sử dụng trình tạo để có được và chia đầu vào và sau đó chỉ ra sự hiểu biết để hình thành từ điển.

{ k : v for k, v in (input().split() for _ in range(4)) }

Đã trả lời ngày 26 tháng 6 năm 2017 lúc 13:11Jun 26, 2017 at 13:11

Hướng dẫn python input string to dictionary - chuỗi nhập python vào từ điển

Steven Summerssteven SummersSteven Summers

4.7742 Huy hiệu vàng17 Huy hiệu bạc 30 Huy hiệu Đồng2 gold badges17 silver badges30 bronze badges

1

Bạn đang lặp lại giá trị của kết quả

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
0 trong vòng lặp bên trong, trong đó bạn chỉ cần gán và giải nén các giá trị phân chia. Thật không may, bạn không thể làm điều đó bên trong một danh sách hiểu.

Nhưng bạn có thể vượt qua một người tạo hiểu tạo ra các cặp đôi thay vì sự hiểu biết từ điển

x = dict(input().split() for k in range(4))

Tuy nhiên, điều đó đơn giản nhưng không chuyển đổi chuỗi thành số nguyên. Để chuyển đổi mục thứ hai thành số nguyên trong khi còn lại trong danh sách hiểu, bạn có thể sử dụng

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
1 trên kết quả phân chia và kiểm tra xem đây là mục thứ 2 sử dụng biểu thức ternary, làm phức tạp dòng nhưng mang lại giá trị dưới dạng số nguyên.

x = dict([int(x) if i==1 else x for i,x in enumerate(input().split())] for k in range(4))

Đã trả lời ngày 26 tháng 6 năm 2017 lúc 11:26Jun 26, 2017 at 11:26

Hướng dẫn python input string to dictionary - chuỗi nhập python vào từ điển

Bạn chỉ đơn giản là chia tách trên khoảng trắng và điều đó sẽ không cung cấp cho bạn các cặp mong muốn. Nó sẽ cung cấp cho bạn một danh sách các từ được phân tách bằng khoảng trắng (như

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
2). Thử một cái gì đó như:

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
3

Đã trả lời ngày 26 tháng 6 năm 2017 lúc 11:22Jun 26, 2017 at 11:22

Hướng dẫn python input string to dictionary - chuỗi nhập python vào từ điển

Sam trò chuyện trò chuyệnSam Chats

2.1811 Huy hiệu vàng11 Huy hiệu bạc32 Huy hiệu đồng1 gold badge11 silver badges32 bronze badges

Cải thiện bài viết

Lưu bài viết

Từ điển trong Python là một cấu trúc dữ liệu rất hữu ích và nhiều lúc chúng ta thấy các vấn đề liên quan đến việc chuyển đổi một chuỗi thành từ điển. Vì vậy, chúng ta hãy thảo luận về cách chúng ta có thể giải quyết vấn đề này. hoàn toàn giống với một đối tượng từ điển (nếu chuỗi trông giống như từ điển như trong Python) thì chúng ta có thể dễ dàng chuyển đổi nó thành từ điển bằng cách sử dụng () trong python.
So, let us discuss how we can tackle this problem.
Method # 1: Using eval()
If we get a string input which completely resembles a dictionary object(if the string looks like dictionary as in python) then we can easily convert it to dictionary using
eval() in Python.

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
4
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
5
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
6

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
5
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
9
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
0

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
1
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
2
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
4

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
1
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
2
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
8
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
9
x = {s: v for k in range(4) for s, v in input().split()}
0

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
1
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
2
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
8
x = {s: v for k in range(4) for s, v in input().split()}
5
x = {s: v for k in range(4) for s, v in input().split()}
0

Output:

{'C': 15, 'B': 14, 'A': 13}
13
15

Phương pháp số 2: Sử dụng các biểu thức của Trình tạo trong Pythonif, chúng ta nhận được một đầu vào chuỗi không hoàn toàn giống với một đối tượng từ điển thì chúng ta có thể sử dụng các biểu thức trình tạo để chuyển đổi nó thành từ điển. Using generator expressions in python
If we get a string input does not completely resemble a dictionary object then we can use generator expressions to convert it to a dictionary.

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
4
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
5
x = {s: v for k in range(4) for s, v in input().split()}
9

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
5
{ k : v for k, v in (input().split() for _ in range(4)) }
2
{ k : v for k, v in (input().split() for _ in range(4)) }
3

{ k : v for k, v in (input().split() for _ in range(4)) }
4
{ k : v for k, v in (input().split() for _ in range(4)) }
5
{ k : v for k, v in (input().split() for _ in range(4)) }
6
{ k : v for k, v in (input().split() for _ in range(4)) }
7
{ k : v for k, v in (input().split() for _ in range(4)) }
8
{ k : v for k, v in (input().split() for _ in range(4)) }
9
x = dict(input().split() for k in range(4))
0

{ k : v for k, v in (input().split() for _ in range(4)) }
4___

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
1
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
2
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
4

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
1
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
2
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
8
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
9
x = {s: v for k in range(4) for s, v in input().split()}
0

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
1
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
2
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
8
x = {s: v for k in range(4) for s, v in input().split()}
5
x = {s: v for k in range(4) for s, v in input().split()}
0

Output:

{'C': '15', 'A': '13', 'B': '14'}
13
15

Cải thiện bài viết

Lưu bài viếtintegers keys are there then just line 8 would work

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
4
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
5
{'C': 15, 'B': 14, 'A': 13}
13
15
6

{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
5
{ k : v for k, v in (input().split() for _ in range(4)) }
2
{'C': '15', 'A': '13', 'B': '14'}
13
15
0
{'C': '15', 'A': '13', 'B': '14'}
13
15
1
{'C': '15', 'A': '13', 'B': '14'}
13
15
2

{ k : v for k, v in (input().split() for _ in range(4)) }
4
{ k : v for k, v in (input().split() for _ in range(4)) }
5
{ k : v for k, v in (input().split() for _ in range(4)) }
6
{ k : v for k, v in (input().split() for _ in range(4)) }
7
{ k : v for k, v in (input().split() for _ in range(4)) }
8
{ k : v for k, v in (input().split() for _ in range(4)) }
9
x = dict(input().split() for k in range(4))
0

{ k : v for k, v in (input().split() for _ in range(4)) }
4___

d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
1
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
2
{ 
    'first': 10,
    'second': 20,
    'third': 30'
    'fourth': 40
}
7
d = {}
for i in range(4):
    s = input().split()
    d[s[0]] = s[1]
4

Output:

{'13': 15, '12': 14, '11': 13}