Python 我有两本以用户名为键的字典。如何合并它们,使键保持不变,并将两个值都指定给键?
我有两本以用户名为键的字典。如何合并它们,使键保持不变,并将两个值都指定给键?如果任何一个字典中都不存在该键,则应将其赋值为0。实际上,我需要从上面的字典中创建一个CSV文件,格式如下。Python 我有两本以用户名为键的字典。如何合并它们,使键保持不变,并将两个值都指定给键?,python,python-3.x,csv,dictionary,export-to-csv,Python,Python 3.x,Csv,Dictionary,Export To Csv,我有两本以用户名为键的字典。如何合并它们,使键保持不变,并将两个值都指定给键?如果任何一个字典中都不存在该键,则应将其赋值为0。实际上,我需要从上面的字典中创建一个CSV文件,格式如下。 用户名,信息,错误。感谢您的帮助。不能添加值。最简单的方法是获取两个字典中所有键的列表并检索这些值。在本例中,我假设结果字典中的每个名称都是字典中的一个键,每个值都是两个键的dict info和error,如果它们各自的值不存在,则为0 无论如何,相同的代码: info_dict = {'breee': 9,
用户名,信息,错误。感谢您的帮助。不能添加值。最简单的方法是获取两个字典中所有键的列表并检索这些值。在本例中,我假设结果字典中的每个名称都是字典中的一个键,每个值都是两个键的dict info和error,如果它们各自的值不存在,则为0 无论如何,相同的代码:
info_dict = {'breee': 9, 'ac': 3, 'mcintosh': 4, 'jackowens': 4, 'mdouglas': 5, 'oren': 9, 'xlg': 6, 'ahmed.miller': 6, 'blossom': 11, 'bpacheco': 3, 'enim.non': 5, 'rr.robinson': 1, 'flavia': 6, 'sri': 3, 'nonummy': 5, 'montanap': 6, 'mai.hendrix': 6, 'kirknixon': 2, 'noel': 5, 'britanni': 1}
error_dict = {'mdouglas': 2, 'noel': 10, 'blossom': 3, 'rr.robinson': 3, 'breee': 1, 'nonummy': 3, 'ahmed.miller': 3, 'jackowens': 4, 'ac': 4, 'kirknixon': 4, 'sri': 4, 'enim.non': 4, 'mcintosh': 7, 'oren': 3, 'britanni': 1}
像这样的
info_dict = {'breee': 9, 'ac': 3, 'mcintosh': 4, 'jackowens': 4, 'mdouglas': 5, 'oren': 9, 'xlg': 6, 'ahmed.miller': 6, 'blossom': 11, 'bpacheco': 3, 'enim.non': 5, 'rr.robinson': 1, 'flavia': 6, 'sri': 3, 'nonummy': 5, 'montanap': 6, 'mai.hendrix': 6, 'kirknixon': 2, 'noel': 5, 'britanni': 1}
error_dict = {'mdouglas': 2, 'noel': 10, 'blossom': 3, 'rr.robinson': 3, 'breee': 1, 'nonummy': 3, 'ahmed.miller': 3, 'jackowens': 4, 'ac': 4, 'kirknixon': 4, 'sri': 4, 'enim.non': 4, 'mcintosh': 7, 'oren': 3, 'britanni': 1}
result_dict = {}
for name in set(list(info_dict.keys())+list(error_dict.keys())):
result_dict[name] = {
"info": info_dict.get(name, 0),
"error": info_dict.get(name, 0)
}
print(result_dict)
产生
info_dict = {'breee': 9, 'ac': 3, 'mcintosh': 4, 'jackowens': 4, 'mdouglas': 5, 'oren': 9, 'xlg': 6, 'ahmed.miller': 6, 'blossom': 11, 'bpacheco': 3, 'enim.non': 5, 'rr.robinson': 1, 'flavia': 6, 'sri': 3, 'nonummy': 5, 'montanap': 6, 'mai.hendrix': 6, 'kirknixon': 2, 'noel': 5, 'britanni': 1}
error_dict = {'mdouglas': 2, 'noel': 10, 'blossom': 3, 'rr.robinson': 3, 'breee': 1, 'nonummy': 3, 'ahmed.miller': 3, 'jackowens': 4, 'ac': 4, 'kirknixon': 4, 'sri': 4, 'enim.non': 4, 'mcintosh': 7, 'oren': 3, 'britanni': 1}
new_dict = {key: [info_dict.get(key, 0), error_dict.get(key, 0)]
for key in set(info_dict.keys()).intersection(error_dict.keys())}
print(new_dict)
比如:
{'kirknixon': [2, 4], 'rr.robinson': [1, 3], 'ac': [3, 4],
'jackowens': [4, 4], 'mdouglas': [5, 2], 'mcintosh': [4, 7],
'blossom': [11, 3], 'breee': [9, 1], 'sri': [3, 4],
'enim.non': [5, 4], 'britanni': [1, 1], 'ahmed.miller': [6, 3],
'noel': [5, 10], 'oren': [9, 3], 'nonummy': [5, 3]}
下面是一个版本,它创建一个列表列表作为输出,并根据您的请求使用pandas导出csv
info_dict = {'breee': 9, 'ac': 3, 'mcintosh': 4, 'jackowens': 4, 'mdouglas': 5, 'oren': 9, 'xlg': 6, 'ahmed.miller': 6, 'blossom': 11, 'bpacheco': 3, 'enim.non': 5, 'rr.robinson': 1, 'flavia': 6, 'sri': 3, 'nonummy': 5, 'montanap': 6, 'mai.hendrix': 6, 'kirknixon': 2, 'noel': 5, 'britanni': 1}
error_dict = {'mdouglas': 2, 'noel': 10, 'blossom': 3, 'rr.robinson': 3, 'breee': 1, 'nonummy': 3, 'ahmed.miller': 3, 'jackowens': 4, 'ac': 4, 'kirknixon': 4, 'sri': 4, 'enim.non': 4, 'mcintosh': 7, 'oren': 3, 'britanni': 1}
from csv import DictWriter
with open('output.csv', 'w') as f:
fields = ['USERNAME', 'INFO', 'ERROR']
writer = DictWriter(f, fields)
writer.writeheader()
all_users = list(info_dict.keys())
all_users.extend(error_dict.keys())
for user in sorted(set(all_users)):
writer.writerow({
'USERNAME': user,
'INFO': info_dict.get(user, 0),
'ERROR': error_dict.get(user, 0)
})
这回答了你的问题吗?谢谢你的投票。只是做了一个小的编辑,使关键点设置。请使用最新版本。非常感谢。你结束了我14小时的挣扎。哈哈。我是python新手,还在学习。非常感谢。我的一个问题用这个解决了,但我还没有弄清楚如何以USERNAME,INFO,ERROR的格式创建CSV文件。非常感谢您在这方面的帮助。
info_dict = {'breee': 9, 'ac': 3, 'mcintosh': 4, 'jackowens': 4, 'mdouglas': 5, 'oren': 9, 'xlg': 6, 'ahmed.miller': 6, 'blossom': 11, 'bpacheco': 3, 'enim.non': 5, 'rr.robinson': 1, 'flavia': 6, 'sri': 3, 'nonummy': 5, 'montanap': 6, 'mai.hendrix': 6, 'kirknixon': 2, 'noel': 5, 'britanni': 1}
error_dict = {'mdouglas': 2, 'noel': 10, 'blossom': 3, 'rr.robinson': 3, 'breee': 1, 'nonummy': 3, 'ahmed.miller': 3, 'jackowens': 4, 'ac': 4, 'kirknixon': 4, 'sri': 4, 'enim.non': 4, 'mcintosh': 7, 'oren': 3, 'britanni': 1}
from csv import DictWriter
with open('output.csv', 'w') as f:
fields = ['USERNAME', 'INFO', 'ERROR']
writer = DictWriter(f, fields)
writer.writeheader()
all_users = list(info_dict.keys())
all_users.extend(error_dict.keys())
for user in sorted(set(all_users)):
writer.writerow({
'USERNAME': user,
'INFO': info_dict.get(user, 0),
'ERROR': error_dict.get(user, 0)
})
import pandas as pd
info_dict = {'breee': 9, 'ac': 3, 'mcintosh': 4, 'jackowens': 4, 'mdouglas': 5, 'oren': 9, 'xlg': 6, 'ahmed.miller': 6, 'blossom': 11, 'bpacheco': 3, 'enim.non': 5, 'rr.robinson': 1, 'flavia': 6, 'sri': 3, 'nonummy': 5, 'montanap': 6, 'mai.hendrix': 6, 'kirknixon': 2, 'noel': 5, 'britanni': 1}
error_dict = {'mdouglas': 2, 'noel': 10, 'blossom': 3, 'rr.robinson': 3, 'breee': 1, 'nonummy': 3, 'ahmed.miller': 3, 'jackowens': 4, 'ac': 4, 'kirknixon': 4, 'sri': 4, 'enim.non': 4, 'mcintosh': 7, 'oren': 3, 'britanni': 1}
every_name.sort()
output = []
for name in set(list(info_dict.keys())+list(error_dict.keys())):
info = info_dict.get(name,0)
error = error_dict.get(name,0)
output.append([name, info, error])
df = pd.DataFrame.from_records(output, columns=["username", "info", "errors"])
df.to_csv('output.csv')