我的列表列表如下所示:
[[4,'apples'],[3,'oranges'],[4,'bananas'],[2,'apples'],[2,'pineapple'],[3,'apples']]
我想从中创建一个字典,其中列出了每个项目的值: 例如,我想要以下输出:
{4:'apples','bananas', 3:'oranges','apples', 2:'apples', 'pineapple'}
答案 0 :(得分:2)
dict.setdefault
, collections.defaultdict
可以提供帮助:
lst = [[4,'apples'],[3,'oranges'],[4,'bananas'],[2,'apples'],[2,'pineapple'],[3,'apples']]
dct = {}
for num, name in lst:
dct.setdefault(num, []).append(name)
print(dct)
#{2: ['apples', 'pineapple'],
# 3: ['oranges', 'apples'],
# 4: ['apples', 'bananas']}
然而,defaultdict
通常是更好,更通用的解决方案。
答案 1 :(得分:1)
代理机构为您服务:
lst = [['4','apples'],['3','oranges'],['4','bananas'],['2','apples'],['2','pineapple'],['3','apples']]
result = {}
for item in lst:
key = item[0]
try:
result[key].append(item[1])
except:
result[key] = [item[1]]
print(result)
# {'3': ['oranges', 'apples'], '2': ['apples', 'pineapple'], '4': ['apples', 'bananas']}
正如@ Jean-Francois Fabre所述,这个解决方案相当缓慢:对于100000次迭代,3,5秒为5.7秒,3,5为defaultdict
的解决方案。
答案 2 :(得分:0)
使用collections.defaultdict
:
result = defaultdict(list)
for key, value in [[4,apples],[3,oranges],[4,bananas],[2,apples],[2,pineapple],[3,apples]]:
result[key].append(value)
答案 3 :(得分:0)
defaultdict
可能对您有用。
Configuration conf = HBaseConfiguration.create();
conf.addResource(new Path("/etc/hbase/conf/core-site.xml"));
conf.addResource(new Path("/etc/hbase/conf/hbase-site.xml"));
JavaHBaseContext hbaseContext = new JavaHBaseContext(jsc, conf);
hbaseContext.bulkPut(rdd, TableName.valueOf("gfttsdgn:FRESHHBaseRushi"), new PutFunction(), true);
public static class PutFunction implements Function<String, Put> {
public Put call(String v) throws Exception {
Put put = new Put(Bytes.toBytes(v));
put.add(Bytes.toBytes("c1"), Bytes.toBytes("output"),
Bytes.toBytes("rohan"));
return put;
}
}
的官方文档示例对您有所帮助。
https://docs.python.org/3/library/collections.html#defaultdict-examples