问题:#编写一个程序来修改records
词典中的电子邮件地址以反映此更改
records = {57394: ['Suresh Datta', 'suresh@example.com'], 48539: ['ColetteBrowning', 'colette@example.com'], 58302: ['Skye Homsi','skye@example.com'], 48502: ['Hiroto Yamaguchi', 'hiroto@example.com'], 48291: ['Tobias Ledford', 'tobias@example.com'], 48293: ['Jin Xu', 'jin@example.com'], 23945: ['Joana Dias', 'joana@example.com'], 85823: ['Alton Derosa', 'alton@example.com']}
我遍历了字典,并创建了带有值的新列表,并在@处拆分了电子邮件,并能够将电子邮件从.com更改为.org。
我的方法是加入更改后的电子邮件并更改字典的值。但是,我继续收到TypeError:序列项0:预期的str实例,找到了列表
我的代码:
lst2 = []
for value in records.values():
lst2.append(value[1].split('@'))
for items in lst2:
items[1] = 'examples.org'
for items in lst2:
','.join(lst2)
答案 0 :(得分:1)
您可以对其进行单线列表理解,然后迭代并将i
的拆分与','
合并,因此请尝试以下操作:
print([','.join(i[1].replace('.com','.org').split('@')) for i in records.values()])
输出:
['suresh,example.org', 'colette,example.org', 'skye,example.org', 'hiroto,example.org', 'tobias,example.org', 'jin,example.org', 'joana,example.org', 'alton,example.org']
或者:
print(['@'.join(i[1].replace('.com','.org').split('@')) for i in records.values()])
输出:
['suresh@example.org', 'colette@example.org', 'skye@example.org', 'hiroto@example.org', 'tobias@example.org', 'jin@example.org', 'joana@example.org', 'alton@example.org']
或者如果要编辑字典:
print({k:[i.replace('.com','.org') for i in v] for k,v in records.items()})
输出:
{57394: ['Suresh Datta', 'suresh@example.org'], 48539: ['ColetteBrowning', 'colette@example.org'], 58302: ['Skye Homsi', 'skye@example.org'], 48502: ['Hiroto Yamaguchi', 'hiroto@example.org'], 48291: ['Tobias Ledford', 'tobias@example.org'], 48293: ['Jin Xu', 'jin@example.org'], 23945: ['Joana Dias', 'joana@example.org'], 85823: ['Alton Derosa', 'alton@example.org']}
答案 1 :(得分:1)
问题出在您的最终for循环中:
for items in lst2:
','.join(lst2)
您要加入的对象应该不是lst2。但是,如果您修复该问题,将仍然无法使用。您需要创建第三个列表,并向其中添加值:
lst3 = []
for items in lst2:
lst3.append('@'.join(items))
然后,lst3将具有格式正确的电子邮件。
答案 2 :(得分:0)
尝试以下代码
records = {57394: ['Suresh Datta', 'suresh@example.com'], 48539: ['ColetteBrowning', 'colette@example.com'], 58302: ['Skye Homsi','skye@example.com'], 48502: ['Hiroto Yamaguchi', 'hiroto@example.com'], 48291: ['Tobias Ledford', 'tobias@example.com'], 48293: ['Jin Xu', 'jin@example.com'], 23945: ['Joana Dias', 'joana@example.com'], 85823: ['Alton Derosa', 'alton@example.com']}
for key, value in records.items():
new_data = []
for data in value:
new_data.append(data.replace('.com', '.org'))
records[key] = new_data
print(records)
{57394:['Suresh Datta','suresh@example.org'],48539:['ColetteBrowning','colette@example.org'],58302:['Skye Homsi','skye @ example。 org”],48502:['Hiroto Yamaguchi','hiroto@example.org'],48291:['Tobias Ledford','tobias@example.org'],48293:['Jin Xu','jin @ example .org'],23945:['Joana Dias','joana@example.org'],85823:['Alton Derosa','alton@example.org']}