我在字典下面创建了这个,并希望输出如下:
main_dict = {
'pins':
{
'Category': ['General'],
'Contact': ['Mark'],
'Description': ['This', 'is', 'a']
},
'nails':
{
'Category': ['specific'],
'Contact': ['Jon'],
'Description': ['This', 'is', 'a', 'description']
},
'board':
{
'Category': ['General'],
'Contact': ['Mark'],
'Description': ['This', 'is', 'a']
},
'hammer':
{
'Category': ['tools'],
'Contact': ['Jon'],
'Description': ['This', 'is', 'a', 'description']
}
}
输出: {' General':[' pins',' board'],'具体':[' nails'], '工具':['锤子']}
答案 0 :(得分:0)
这是我解决问题的方法:
mainDict={'firstKey': {'field1': ['value1'], 'field2': ['value2']}, 'secondKey': {'field1': ['valuex'], 'field2': ['valuey']}}
x = 'field1' # by x i assume some string that matches the key field1
myListDict = {} # empty dictionary to store the variables
for key in mainDict.keys():
for subkey in mainDict[key].keys() :
if subkey == x :
myListDict[mainDict[key][subkey][0]] = key
print(myListDict)
输出是:
{'valuex': 'secondKey', 'value1': 'firstKey'}
这是基于我对所提问题或给出的信息的理解。 希望这会有所帮助。
答案 1 :(得分:0)
根据您的意见,我得到了一个似乎符合您要求的答案。首先,有问题的词典:
main_dict = {
'pins':
{
'Category': ['General'],
'Contact': ['Mark'],
'Description': ['This', 'is', 'a']
},
'nails':
{
'Category': ['specific'],
'Contact': ['Jon'],
'Description': ['This', 'is', 'a', 'description']
},
'board':
{
'Category': ['General'],
'Contact': ['Mark'],
'Description': ['This', 'is', 'a']
},
'hammer':
{
'Category': ['tools'],
'Contact': ['Jon'],
'Description': ['This', 'is', 'a', 'description']
}
}
现在,我假设'Category'
始终是我们想要第一个元素的列表。如果情况并非如此,解决方案将无法正常运作。
从这里开始,我们应该声明Category
作为我们关心的密钥(在您的初始示例中为X
),并创建一个我们将在最后返回的answer
字典。
KEY = 'Category'
answer = {}
接下来,我们将创建一个为我们的答案词汇提供数据的函数。
for elem in main_dict:
to_add = ' '.join(main_dict[elem][KEY])
if to_add not in answer:
answer[to_add] = [elem]
else:
answer[to_add].append(elem)
最后,我们使用print(answer)
打印结果并获得以下输出:
{'General': ['pins', 'board'], 'specific': ['nails'], 'tools': ['hammer']}
。
希望这有助于解决您的问题!如果有任何不清楚或需要进一步说明,请告诉我。
编辑:添加新答案:
construction = {'General': ['pins', 'board'], 'specific': ['nails'], 'tools': ['hammer', 'screwdriver', 'tape' ]}
longest_arr = 0
for elem in construction:
if len(construction[elem]) > longest_arr:
longest_arr = len(construction[elem])
lines_to_print = [[] for x in range(longest_arr)]
print(lines_to_print)
for elem in construction:
construction[elem] = construction[elem] + [" "] * (longest_arr - len(construction[elem]))
for index, item in enumerate(construction[elem]):
lines_to_print[index].append(item)
for arr in lines_to_print:
print (' '.join(arr))