我是python的新手,并且在合并字典时查看了其他答案,但仍然有点困惑.我希望通过特定键中的公共值将python中的两个词典合并在一起,以便在新词典中使用来自两个词典的其他键输出该公共键.
以下是示例数据:
add_sal = {'career_medicine': None, 'career_law': None, 'median_salary': None, 'mean_salary': 75000.0, 'career_business': 'operations / logistics', 'number': None}
add_perc = {'percent': 0.07, 'career_business': 'operations / logistics'}
Run Code Online (Sandbox Code Playgroud)
我想合并'career_business'的关键值对:'operations/logistics'并输出一个如下所示的字典:
add_all = {'career_medicine': None, 'career_law': None, 'median_salary': None, 'mean_salary': 75000.0, 'career_business': 'operations / logistics', 'number': None, 'percent': 0.07}
Run Code Online (Sandbox Code Playgroud)
另一个问题是我不知道名称是否匹配,我循环遍历add_sal列表和add_perc列表.
任何意见,将不胜感激!先感谢您!
当两个列表的长度不同(使用 Python 3.6)时,我想在一个键上合并两个字典列表。例如,如果我们有一个名为 的字典列表l1:
l1 = [{'pcd_sector': 'ABDC', 'coverage_2014': '100'},
{'pcd_sector': 'DEFG', 'coverage_2014': '0'}]
Run Code Online (Sandbox Code Playgroud)
和另一个名为 dicts 的列表l2:
l2 = [{'pcd_sector': 'ABDC', 'asset': '3G', 'asset_id': '2gs'},
{'pcd_sector': 'ABDC', 'asset': '4G', 'asset_id': '7jd'},
{'pcd_sector': 'DEFG', 'asset': '3G', 'asset_id': '3je'},
{'pcd_sector': 'DEFG', 'asset': '4G', 'asset_id': '8js'},
{'pcd_sector': 'CDEF', 'asset': '3G', 'asset_id': '4jd'}]
Run Code Online (Sandbox Code Playgroud)
如何将它们合并使用pcd_sector以获得此(?):
result = [{'pcd_sector': 'ABDC', 'asset': '3G', 'asset_id': '2gs', 'coverage_2014': '100'},
{'pcd_sector': 'ABDC', 'asset': '4G', 'asset_id': '7jd', 'coverage_2014': '100'},
{'pcd_sector': 'DEFG', 'asset': '3G', 'asset_id': '3je', …Run Code Online (Sandbox Code Playgroud) 我有一些包含嵌套字典的数据,如下所示:
mylist = [{"a": 1, "b": {"c": 2, "d":3}}, {"a": 3, "b": {"c": 4, "d":3}}]
Run Code Online (Sandbox Code Playgroud)
如果我们将其转换为 pandas DataFrame,
import pandas as pd
result_dataframe = pd.DataFrame(mylist)
print(result_dataframe)
Run Code Online (Sandbox Code Playgroud)
它将输出:
a b
0 1 {'c': 2, 'd': 3}
1 3 {'c': 4, 'd': 3}
Run Code Online (Sandbox Code Playgroud)
我想转换字典列表并忽略嵌套字典的键。我的代码如下:
new_dataframe = result_dataframe.drop(columns=["b"])
b_dict_list = [document["b"] for document in mylist]
b_df = pd.DataFrame(b_dict_list)
frames = [new_dataframe, b_df]
total_frame = pd.concat(frames, axis=1)
Run Code Online (Sandbox Code Playgroud)
Total_frame 是我想要的:
a c d
0 1 2 3
1 3 4 3
Run Code Online (Sandbox Code Playgroud)
但我认为我的代码有点复杂。有什么简单的方法可以解决这个问题吗?谢谢。
我有4本字典,我们称它们为:
dict1,dict2,dict3,dict4
例:
dict1 = {'A': 1, 'B':2}
dict2 = {'A': 3, 'C':4}
dict3 = {'B': 5, 'D':6}
dict4 = {'A': 7, 'B':8, 'C': 9, 'D':10, 'E':11}
Run Code Online (Sandbox Code Playgroud)
每个词典级别都比后面的那些级别“强”。如,A发现dict1将是“更强大”比A中发现的dict2以优先的形式。是否有一个简短而优美的脚本来创建一个新字典,将其全部四个部分组装在一起,其中每个键都来自包含该键的“最强”词典?
结果应为: dict = {'A':1, 'B':2, 'C':4, 'D:6', 'E':11}
我有多个字典,其中包含取决于其业务价值的数据,例如:
companies = {'google': 'value_1', 'facebook': 'value_2'}
names = {'alex': 'value_3', 'john': 'value_4'}
...
Run Code Online (Sandbox Code Playgroud)
我需要检查一个变量x是否包含在这些字典中的任何一个中,并确定它包含在哪些字典中。此类字典的数量可能很大,因此手动检查它们不是很有效。有没有比这更pythonic的东西
companies = {'google': 'value_1', 'facebook': 'value_2'}
names = {'alex': 'value_3', 'john': 'value_4'}
...
Run Code Online (Sandbox Code Playgroud) 我有许多带有数据(data_cols)和文本(text_cols)的列,我想通过引用列名列表来执行以下操作,但无法弄清楚:
df.groupby('id', as_index=False).agg({data_cols: 'sum', text_cols: 'first'})
我有一个包含约 30 列的数据框,其中一些列包含值,其他列包含文本。我想对具有相同 id 的所有值进行求和,并让文本使用第一个条目。我可以通过使用 groupby 来实现这一点:
d = {'id': ['a', 'a', 'b', 'c'], 'value1': [1, 2, 3, 4], 'value2': [5, 6, 7, 8], 'text1': ['w', 'x', 'y', 'z']}
df = pd.DataFrame(d)
id value1 value2 text1
0 a 1 5 w
1 a 2 6 x
2 b 3 7 y
3 c 4 8 z
df.groupby('id', as_index=False).agg({'value1': 'sum', 'value2': 'sum', 'text1': 'first'})
id value1 value2 text1
0 a 3 11 w …Run Code Online (Sandbox Code Playgroud) 我有两个清单:
list1 = [{"name":"xyz" ,"roll":"r" , "sap_id":"z"} , {"name":"pqr" ,"roll":"s" , "sap_id":"w"}]
list2 = [{"cn_number":"26455"} , {"cn_number":"26456"}]
Run Code Online (Sandbox Code Playgroud)
我想要一个新列表,例如:
new_list = [{"name":xyz ,"roll":"r" , "sap_id":"z","cn_number":"26455"} , {"name":"pqr" ,"roll":"s" , "sap_id":"w","cn_number":"26456"}]
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
new_list = [i.update(j) for i, j in zip(list1, list2)]
Run Code Online (Sandbox Code Playgroud)
但遇到了一些令人讨厌的错误
我有几个词典,我想组合,如果一个键在多个词典中,值将被加在一起.例如:
d1 = {1: 10, 2: 20, 3: 30}
d2 = {1: 1, 2: 2, 3: 3}
d3 = {0: 0}
merged = {1: 11, 2: 22, 3: 33, 0: 0}
Run Code Online (Sandbox Code Playgroud)
在Python中执行此操作的最佳方法是什么?我正在看defaultdict并试图找出一些东西.我正在使用Python 2.6.
我想合并字典中的所有字典,同时忽略主字典键,并按值汇总其他字典的值.
输入:
{'first':{'a': 5}, 'second':{'a': 10}, 'third':{'b': 5, 'c': 1}}
Run Code Online (Sandbox Code Playgroud)
输出:
{'a': 15, 'b': 5, 'c': 1}
Run Code Online (Sandbox Code Playgroud)
我做了:
def merge_dicts(large_dictionary):
result = {}
for name, dictionary in large_dictionary.items():
for key, value in dictionary.items():
if key not in result:
result[key] = value
else:
result[key] += value
return result
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我不认为这是一个好方法(或更少"pythonic").
顺便说一句,我不喜欢我写的标题.如果有人想到更好的措辞,请编辑.
根据此答案,在Python 3.5或更高版本中,可以合并两个字典x并y解压缩它们:
z = {**x, **y}
Run Code Online (Sandbox Code Playgroud)
是否可以解压缩各种字典表?就像是
def merge(*dicts):
return {***dicts} # this fails, of course. What should I use here?
Run Code Online (Sandbox Code Playgroud)
例如,我希望
list_of_dicts = [{'a': 1, 'b': 2}, {'c': 3}, {'d': 4}]
{***list_of_dicts} == {'a': 1, 'b': 2, 'c': 3, 'd': 4}
Run Code Online (Sandbox Code Playgroud)
请注意,此问题不是关于如何合并字典列表的问题,因为上面的链接提供了对此的答案。这里的问题是:是否有可能以及如何解压缩字典列表?
正如评论指出,这个问题是非常相似的这一个。但是,解压缩字典列表与简单地合并它们是不同的。假设有一个运算符***旨在解开字典列表,并给出
def print_values(a, b, c, d):
print('a =', a)
print('b =', b)
print('c =', c)
print('d =', d)
list_of_dicts = [{'a': 1, 'b': …Run Code Online (Sandbox Code Playgroud)