8
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Vì một số lý do, mã của tôi từ chối chuyển đổi thành chữ hoa và tôi không thể hiểu tại sao. Sau đó, tôi đang cố gắng viết từ điển vào một tệp với các giá trị từ điển chữ hoa được nhập vào một loại tệp mẫu.
#!/usr/bin/env python3
import fileinput
from collections import Counter
#take every word from a file and put into dictionary
newDict = {}
dict2 = {}
with open['words.txt', 'r'] as f:
for line in f:
k,v = line.strip[].split[' ']
newDict[k.strip[]] = v.strip[]
print[newDict]
choice = input['Enter 1 for all uppercase keys or 2 for all lowercase, 3 for capitalized case or 0 for unchanged \n']
print["Your choice was " + choice]
if choice == 1:
for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
if choice == 2:
for k,v in newDict.items[]:
dict2.update[{k.lower[]: v}]
#find keys and replace with word
print[newDict]
with open["tester.txt", "rt"] as fin:
with open["outwords.txt", "wt"] as fout:
for line in fin:
fout.write[line.replace['{PETNAME}', str[newDict['PETNAME:']]]]
fout.write[line.replace['{ACTIVITY}', str[newDict['ACTIVITY:']]]]
myfile = open["outwords.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
Hỏi ngày 24 tháng 4 năm 2018 lúc 14:33Apr 24, 2018 at 14:33
1
Trong Python 3 bạn không thể làm điều đó:
for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
Bởi vì nó thay đổi từ điển trong khi lặp lại nó và Python không cho phép điều đó [nó không xảy ra với Python 2 vì items[]
được sử dụng để trả về một bản sao của các phần tử dưới dạng list
]. Bên cạnh đó, ngay cả khi nó hoạt động, nó sẽ giữ các phím cũ [cũng: rất chậm để tạo một từ điển ở mỗi lần lặp ...]
Thay vào đó, hãy xây dựng lại bản quyền của bạn trong một sự hiểu biết chính thống:
newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
Đã trả lời ngày 24 tháng 4 năm 2018 lúc 14:36Apr 24, 2018 at 14:36
4
Bạn không nên thay đổi các mục từ điển khi bạn lặp lại chúng. Trạng thái tài liệu:
Lặp lại các chế độ xem trong khi thêm hoặc xóa các mục trong từ điển có thể tăng
RuntimeError
hoặc không lặp lại tất cả các mục.
Một cách để cập nhật từ điển của bạn theo yêu cầu là các giá trị pop và gán lại trong vòng lặp for
. Ví dụ:
d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
Một giải pháp thay thế là một sự hiểu biết từ điển, như được hiển thị bởi @jean-françoisfabre.
Đã trả lời ngày 24 tháng 4 năm 2018 lúc 14:42Apr 24, 2018 at 14:42
JPPJPPjpp
153K32 Huy hiệu vàng260 Huy hiệu bạc319 Huy hiệu Đồng32 gold badges260 silver badges319 bronze badges
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận : {“Gfg” : [“ab”, “cd”], “Best” : [“gh”], “is” : [“kl”]}
Output : {‘Gfg’: [‘AB’, ‘CD’], ‘Best’: [‘GH’], ‘is’: [‘KL’]}
Explanation : All value lists strings are converted to upper case.Đưa ra từ điển với danh sách giá trị, chuyển đổi tất cả các chuỗi thành trường hợp trên. : {“Gfg” : [“ab”, “cd”, “Ef”]}
Output : {‘Gfg’: [‘AB’, ‘CD’, “EF”]}
Explanation : All value lists strings are converted to upper case, already upper case have no effect.
Đầu vào: {{Gfgg, [[ab ab, cd cd], tốt nhất Cd '],' tốt nhất ': [' gh '],' là ': [' kl ']} Giải thích: Tất cả các chuỗi danh sách giá trị được chuyển đổi thành trường hợp trên.
Đầu vào: {{Gfgg, [[ab ab, cd cd đến trường hợp trên, trường hợp trên không có hiệu lực.
Python3
test_dict
=
for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
0for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
1 for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
2for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
3for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
4for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
5for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
4for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
7for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
8for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
9newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
0 for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
2newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
222214newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
4newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
5newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
6 for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
2newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
8newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
9d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
0d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
1d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
2 d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
3 d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
4d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
5‘
d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
0d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
1items[]
9 d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
3 d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
4list
2Đầu ra
Từ điển ban đầu là: {'gfg': ['ab', 'cd', 'ef'], 'tốt nhất': ['gh', 'ij'], 'là': ['kl']} Từ điển Sau khi chuyển đổi {'gfg': ['ab', 'cd', 'ef'], 'tốt nhất': ['gh', 'ij'], 'là': ['kl']}}
The dictionary after conversion {‘Gfg’: [‘AB’, ‘CD’, ‘EF’], ‘Best’: [‘GH’, ‘IJ’], ‘is’: [‘KL’]}
Các phím Python Dicts có nhạy cảm không?
Sự kết hợp của các chức năng trên có thể được sử dụng để giải quyết vấn đề này. Trong đó, chúng tôi thực hiện nhiệm vụ mở rộng logic của trường hợp trên bằng bản đồ [] thay vì danh sách hiểu.
Python3
test_dict
=
for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
0for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
1 for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
2for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
3for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
4for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
5for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
4for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
7for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
8for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
9newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
0 for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
2newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
222214newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
4newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
5newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
6 for k,v in newDict.items[]:
newDict.update[{k.upper[]: v.upper[]}]
2newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
8newDict = {k.upper[]:v.upper[] for k,v in newDict.items[]}
9d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
0d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
1d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
2 d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
3 d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
4d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
5‘
d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
0d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
1items[]
9 d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
3 d = {'abc': 'xyz', 'def': 'uvw', 'ghi': 'rst'}
for k, v in d.items[]:
d[k.upper[]] = d.pop[k].upper[]
print[d]
{'ABC': 'XYZ', 'DEF': 'UVW', 'GHI': 'RST'}
4list
2Đầu ra
Từ điển ban đầu là: {'gfg': ['ab', 'cd', 'ef'], 'tốt nhất': ['gh', 'ij'], 'là': ['kl']} Từ điển Sau khi chuyển đổi {'gfg': ['ab', 'cd', 'ef'], 'tốt nhất': ['gh', 'ij'], 'là': ['kl']}}
The dictionary after conversion {‘Gfg’: [‘AB’, ‘CD’, ‘EF’], ‘Best’: [‘GH’, ‘IJ’], ‘is’: [‘KL’]}